Mercurial > hg > config
comparison python/multiproc.py @ 599:782dc37492c4
STUB: python/multiproc.py
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Thu, 30 Jan 2014 12:45:45 -0800 |
parents | c5537e841c78 |
children | a77f7022cc06 |
comparison
equal
deleted
inserted
replaced
598:e21c49e32b95 | 599:782dc37492c4 |
---|---|
9 import subprocess | 9 import subprocess |
10 import sys | 10 import sys |
11 import time | 11 import time |
12 import tempfile | 12 import tempfile |
13 | 13 |
14 here = os.path.dirname(os.path.realpath(__file__)) | 14 progs = {'yes': ["yes"], |
15 prog = ["yes"] | 15 'ping': ['ping', 'google.com']} |
16 timeout = 4. | |
17 sleep = 1. | |
18 | 16 |
19 def main(args=sys.argv[1:]): | 17 def main(args=sys.argv[1:]): |
18 """CLI""" | |
20 | 19 |
20 # parse command line | |
21 usage = '%prog [options]' | 21 usage = '%prog [options]' |
22 parser = argparse.ArgumentParser(usage=usage, description=__doc__) | 22 parser = argparse.ArgumentParser(usage=usage, description=__doc__) |
23 parser.add_argument("-t", "--time", dest="time", | 23 parser.add_argument("-t", "--time", dest="time", |
24 type=float, default=4., | |
25 help="seconds to run for") | |
26 parser.add_argument("-s", "--sleep", dest="sleep", | |
24 type=float, default=1., | 27 type=float, default=1., |
25 help="seconds to run for") | 28 help="") |
26 options = parser.parse_args(args) | 29 options = parser.parse_args(args) |
27 | 30 |
31 | |
32 # select program | |
33 prog = progs['ping'] | |
34 | |
35 # start the main subprocess loop | |
36 # TODO -> OO | |
28 output = tempfile.SpooledTemporaryFile() | 37 output = tempfile.SpooledTemporaryFile() |
29 start = time.time() | 38 start = time.time() |
30 proc = subprocess.Popen(prog, stdout=output) | 39 proc = subprocess.Popen(prog, stdout=output) |
40 location = 0 | |
31 while proc.poll() is None: | 41 while proc.poll() is None: |
32 if time.time() - start > options.time: | 42 curr_time = time.time() |
43 run_time = curr_time - start | |
44 if run_time > options.time: | |
33 proc.kill() | 45 proc.kill() |
46 if options.sleep: | |
47 time.sleep(options.sleep) | |
48 output.seek(location) | |
49 read = output.read() | |
50 location += len(read) | |
51 print ('[{}] {}\n{}'.format(run_time, read, '-==-'*10)) | |
34 | 52 |
35 # reset tempfile | 53 # reset tempfile |
36 output.seek(0) | 54 output.seek(0) |
37 | 55 |
38 n_lines = len(output.read().splitlines()) | 56 n_lines = len(output.read().splitlines()) |