Mercurial > hg > config
comparison python/multiproc.py @ 608:9a5cdd49af53
STUB: python/multiproc.py
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 02 Feb 2014 11:37:34 -0800 |
parents | 567492ef7b57 |
children | 3ea759399b8f |
comparison
equal
deleted
inserted
replaced
607:567492ef7b57 | 608:9a5cdd49af53 |
---|---|
63 | 63 |
64 # naptime | 64 # naptime |
65 if sleep: | 65 if sleep: |
66 time.sleep(sleep) | 66 time.sleep(sleep) |
67 | 67 |
68 # reset tempfile | |
69 output.seek(0) | |
70 | |
71 return self.returncode # set by ``.poll()`` | |
68 | 72 |
69 def commandline(self): | 73 def commandline(self): |
70 """returns string of command line""" | 74 """returns string of command line""" |
71 | 75 |
72 if isinstance(self.command, string): | 76 if isinstance(self.command, string): |
99 parser.add_argument("--list-programs", dest='list_programs', | 103 parser.add_argument("--list-programs", dest='list_programs', |
100 action='store_true', default=False, | 104 action='store_true', default=False, |
101 help="list available programs") | 105 help="list available programs") |
102 options = parser.parse_args(args) | 106 options = parser.parse_args(args) |
103 | 107 |
108 # list programs | |
109 if options.list_programs: | |
110 for key in sorted(progs.keys()): | |
111 print ('{}: {}'.format(key, subprocess.list2cmdline(progs[key]))) | |
104 | 112 |
105 # select program | 113 # select program |
106 prog = progs[options.program] | 114 prog = progs[options.program] |
107 | 115 |
108 # start the main subprocess loop | 116 proc = Process(prog) |
109 # TODO -> OO | |
110 output = tempfile.SpooledTemporaryFile() | |
111 start = time.time() | |
112 proc = subprocess.Popen(prog, stdout=output) | |
113 location = 0 | |
114 while proc.poll() is None: | |
115 curr_time = time.time() | |
116 run_time = curr_time - start | |
117 if run_time > options.time: | |
118 proc.kill() | |
119 output.seek(location) | |
120 read = output.read() | |
121 location += len(read) | |
122 print ('[{}] {}\n{}'.format(run_time, read, '-==-'*10)) | |
123 if options.sleep: | |
124 time.sleep(options.sleep) | |
125 | 117 |
126 # reset tempfile | 118 # # start the main subprocess loop |
127 output.seek(0) | 119 # # TODO -> OO |
120 # output = tempfile.SpooledTemporaryFile() | |
121 # start = time.time() | |
122 # proc = subprocess.Popen(prog, stdout=output) | |
123 # location = 0 | |
124 # while proc.poll() is None: | |
125 # curr_time = time.time() | |
126 # run_time = curr_time - start | |
127 # if run_time > options.time: | |
128 # proc.kill() | |
129 # output.seek(location) | |
130 # read = output.read() | |
131 # location += len(read) | |
132 # print ('[{}] {}\n{}'.format(run_time, read, '-==-'*10)) | |
133 # if options.sleep: | |
134 # time.sleep(options.sleep) | |
135 | |
136 # # reset tempfile | |
137 # output.seek(0) | |
128 | 138 |
129 n_lines = len(output.read().splitlines()) | 139 n_lines = len(output.read().splitlines()) |
130 print ("{}: {} lines".format(subprocess.list2cmdline(prog), n_lines)) | 140 print ("{}: {} lines".format(subprocess.list2cmdline(prog), n_lines)) |
131 | 141 |
132 if __name__ == '__main__': | 142 if __name__ == '__main__': |