Mercurial > hg > config
comparison python/multiproc.py @ 607:567492ef7b57
STUB: python/multiproc.py
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 02 Feb 2014 11:16:51 -0800 |
parents | 5b561c7b2005 |
children | 9a5cdd49af53 |
comparison
equal
deleted
inserted
replaced
606:5b561c7b2005 | 607:567492ef7b57 |
---|---|
25 # setup arguments | 25 # setup arguments |
26 self.command = command | 26 self.command = command |
27 _kwargs = self.defaults.copy() | 27 _kwargs = self.defaults.copy() |
28 _kwargs.update(kwargs) | 28 _kwargs.update(kwargs) |
29 | 29 |
30 # on unix, ``shell={True|False}`` should always come from the | |
31 # type of command (string or list) | |
32 if not mswindows: | |
33 _kwargs['shell'] = isinstance(command, string) | |
34 | |
30 # output buffer | 35 # output buffer |
31 self.output_buffer = tempfile.SpooledTemporaryFile() | 36 self.output_buffer = tempfile.SpooledTemporaryFile() |
32 self.location = 0 | 37 self.location = 0 |
33 self.output = [] | 38 self.output = [] |
34 _kwargs['stdout'] = self.output_buffer | 39 _kwargs['stdout'] = self.output_buffer |
35 | 40 |
36 # launch subprocess | 41 # launch subprocess |
37 self.start = time.time() | 42 self.start = time.time() |
38 subprocess.Popen.__init__(self, *args, **_kwargs) | 43 subprocess.Popen.__init__(self, command, **_kwargs) |
39 | 44 |
40 def wait(self, maxtime=None, sleep=1.): | 45 def wait(self, maxtime=None, sleep=1.): |
41 """ | 46 """ |
42 maxtime -- timeout in seconds | 47 maxtime -- timeout in seconds |
43 sleep -- number of seconds to sleep between polling | 48 sleep -- number of seconds to sleep between polling |
49 run_time = curr_time - self.start | 54 run_time = curr_time - self.start |
50 if run_time > maxtime: | 55 if run_time > maxtime: |
51 # TODO: read from output | 56 # TODO: read from output |
52 return process.kill() | 57 return process.kill() |
53 | 58 |
59 # read from output buffer | |
60 self.output_buffer.seek(self.location) | |
61 read = self.output_buffer.read() | |
62 self.location += len(read) | |
63 | |
54 # naptime | 64 # naptime |
55 if sleep: | 65 if sleep: |
56 time.sleep(sleep) | 66 time.sleep(sleep) |
57 | 67 |
58 # read from output buffer | |
59 self.output_buffer.seek(self.location) | |
60 read = self.output_buffer.read() | |
61 self.location += len(read) | |
62 | 68 |
63 def commandline(self): | 69 def commandline(self): |
64 """returns string of command line""" | 70 """returns string of command line""" |
65 | 71 |
66 if isinstance(self.command, string): | 72 if isinstance(self.command, string): |