Mercurial > hg > config
comparison python/multiproc.py @ 613:bf3f8bc6d1b3
STUB: python/multiproc.py
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 02 Feb 2014 16:14:17 -0800 |
parents | 839dfd35d567 |
children | f905378fcee0 |
comparison
equal
deleted
inserted
replaced
612:839dfd35d567 | 613:bf3f8bc6d1b3 |
---|---|
56 self.output_buffer.seek(0) | 56 self.output_buffer.seek(0) |
57 | 57 |
58 # set end time | 58 # set end time |
59 self.end = time.time() | 59 self.end = time.time() |
60 | 60 |
61 def poll(self): | |
62 return subprocess.Popen.poll(self) | |
63 | |
61 def wait(self, maxtime=None, sleep=1., process_output=None): | 64 def wait(self, maxtime=None, sleep=1., process_output=None): |
62 """ | 65 """ |
63 maxtime -- timeout in seconds | 66 maxtime -- timeout in seconds |
64 sleep -- number of seconds to sleep between polling | 67 sleep -- number of seconds to sleep between polling |
65 """ | 68 """ |
66 while self.poll() is None: | 69 while self.poll() is None: |
67 | 70 |
68 # check for timeout | 71 # check for timeout |
69 curr_time = time.time() | 72 curr_time = time.time() |
70 run_time = curr_time - self.start | 73 run_time = self.runtime() |
71 if maxtime is not None and run_time > maxtime: | 74 if maxtime is not None and run_time > maxtime: |
72 self.kill() | 75 self.kill() |
73 self._finalize(process_output) | 76 self._finalize(process_output) |
74 return | 77 return |
75 | 78 |
79 # naptime | 82 # naptime |
80 if sleep: | 83 if sleep: |
81 time.sleep(sleep) | 84 time.sleep(sleep) |
82 | 85 |
83 # finalize | 86 # finalize |
84 self._finalize() | 87 self._finalize(process_output) |
85 | 88 |
86 return self.returncode # set by ``.poll()`` | 89 return self.returncode # set by ``.poll()`` |
87 | 90 |
88 def read(self, process_output=None): | 91 def read(self, process_output=None): |
89 """read from the output buffer""" | 92 """read from the output buffer""" |
108 | 111 |
109 def runtime(self): | 112 def runtime(self): |
110 """returns time spent running or total runtime if completed""" | 113 """returns time spent running or total runtime if completed""" |
111 | 114 |
112 if self.end is None: | 115 if self.end is None: |
113 return self.end - self.start | 116 return time.time() - self.start |
114 return time.time() - self.start | 117 return self.end - self.start |
115 | 118 |
116 | 119 |
117 def main(args=sys.argv[1:]): | 120 def main(args=sys.argv[1:]): |
118 """CLI""" | 121 """CLI""" |
119 | 122 |
149 # start process | 152 # start process |
150 proc = Process(prog) | 153 proc = Process(prog) |
151 | 154 |
152 # callback for output processing | 155 # callback for output processing |
153 def process_output(output): | 156 def process_output(output): |
154 print output.upper() | 157 print ('[{}] {}\n{}'.format(proc.runtime(), |
158 output.upper(), | |
159 '-==-'*10)) | |
155 | 160 |
156 # # start the main subprocess loop | 161 |
157 # # TODO -> OO | 162 # LEGACY: output = tempfile.SpooledTemporaryFile() |
158 # output = tempfile.SpooledTemporaryFile() | |
159 # start = time.time() | 163 # start = time.time() |
160 # proc = subprocess.Popen(prog, stdout=output) | 164 # proc = subprocess.Popen(prog, stdout=output) |
161 # location = 0 | 165 # location = 0 |
162 # while proc.poll() is None: | 166 |
163 # curr_time = time.time() | 167 # start the main subprocess loop |
164 # run_time = curr_time - start | 168 # while proc.poll() is None: |
165 # if run_time > options.time: | 169 |
166 # proc.kill() | 170 # LEGACY: |
171 # curr_time = time.time() | |
172 # run_time = curr_time - start | |
173 # if run_time > options.time: | |
174 # proc.kill() | |
175 | |
176 | |
167 # output.seek(location) | 177 # output.seek(location) |
168 # read = output.read() | 178 # read = output.read() |
169 # location += len(read) | 179 # location += len(read) |
170 # print ('[{}] {}\n{}'.format(run_time, read, '-==-'*10)) | 180 # print ('[{}] {}\n{}'.format(run_time, read, '-==-'*10)) |
171 # if options.sleep: | 181 # if options.sleep: |