Simultaneous output parsing of child process?
John Roth
newsgroups at jhrothjr.com
Thu Oct 2 12:43:09 EDT 2003
"Fraser Gordon" <fraser.gordon at cognos.com> wrote in message
news:deb65cae.0310020645.3af9cf62 at posting.google.com...
> Hello,
>
> Hopefully someone can help me out with this issue...
>
> I have a python script that needs to run a shell command and be able
> to react to output from that command as it occurs (as opposed to
> waiting for the whole command to complete and then parsing the
> output). Is this possible with Python?
>
> I created a test script that prints a line of output to stdout every 4
> seconds or so. I want to create a "parent" script that kicks off the
> test script, and prints data as soon as the test script sends anything
> to the standard output (ie. every 4 seconds).
>
> Furthermore, the solution needs to support Windows, several flavors of
> UNIX and potentially LINUX.
>
> I would ideally like to have the following type of behaviour:
>
> childPipe = kickOffChild('test.py')
> while <child process still active>:
> line = childPipe.checkForStdOutput()
> if line: # This should trigger once every 4 seconds in the
> example above
> print "OUTPUT:", line
> print "Process completed."
>
>
> Any help would be greatly appreciated.
You need to use separate threads to process stdin, stdout and
stderr. Otherwise, you'll run the risk of a deadlock.
Unfortunately, the select service does not work on Windows
in all circumstances, so you can't simply switch between the
different files as needed.
John Roth
>
> Fraser
More information about the Python-list
mailing list