Skip to content

Commit 0c8da51

Browse files
committed
factor out some code
1 parent c5abeb0 commit 0c8da51

File tree

2 files changed

+30
-24
lines changed

2 files changed

+30
-24
lines changed

cv/__init__.py

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22
CV
33
"""
44
from __future__ import print_function
5-
6-
from collections import defaultdict, deque
7-
import itertools
5+
from collections import defaultdict
86
import sys
97
import argparse
108
import signal
119
from time import sleep, time
1210
import curses
1311

1412
from procutil import find_pids_by_binary_name, find_fd_for_pid, get_fdinfo
13+
from util import format_size, moving_average
1514

1615
APP_NAME = "cv"
1716
PROC_NAMES = ["cp", "mv", "dd", "tar", "gzip", "gunzip", "cat", "grep", "fgrep", "egrep", "cut", "sort", "rsync"]
@@ -38,27 +37,6 @@ class AppConfig(object):
3837
throughput_wait_secs = 1
3938
proc_names = []
4039

41-
def moving_average(iterable, n=3):
42-
# moving_average([40, 30, 50, 46, 39, 44]) --> 40.0 42.0 45.0 43.0
43-
# http://en.wikipedia.org/wiki/Moving_average
44-
it = iter(iterable)
45-
d = deque(itertools.islice(it, n-1))
46-
d.appendleft(0)
47-
s = sum(d)
48-
for elem in it:
49-
s += elem - d.popleft()
50-
d.append(elem)
51-
yield s / float(n)
52-
53-
def format_size(n):
54-
# source: http://stackoverflow.com/questions/1094841/reusable-library-to-get-human-readable-version-of-file-size
55-
fmt = "%3.1f %s"
56-
for x in 'bytes','KB','MB','GB':
57-
if n < 1024.0 and n > -1024.0:
58-
return fmt % (n, x)
59-
n /= 1024.0
60-
return fmt % (n, 'TB')
61-
6240

6341

6442
class Main(object):

cv/util.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import itertools
2+
from collections import deque
3+
4+
__all__ = """
5+
format_size
6+
moving_average
7+
""".split()
8+
9+
def moving_average(iterable, n=3):
10+
# moving_average([40, 30, 50, 46, 39, 44]) --> 40.0 42.0 45.0 43.0
11+
# http://en.wikipedia.org/wiki/Moving_average
12+
it = iter(iterable)
13+
d = deque(itertools.islice(it, n-1))
14+
d.appendleft(0)
15+
s = sum(d)
16+
for elem in it:
17+
s += elem - d.popleft()
18+
d.append(elem)
19+
yield s / float(n)
20+
21+
def format_size(n):
22+
# source: http://stackoverflow.com/questions/1094841/reusable-library-to-get-human-readable-version-of-file-size
23+
fmt = "%3.1f %s"
24+
for x in 'bytes','KB','MB','GB':
25+
if n < 1024.0 and n > -1024.0:
26+
return fmt % (n, x)
27+
n /= 1024.0
28+
return fmt % (n, 'TB')

0 commit comments

Comments
 (0)