[Pythonmac-SIG] Subprocess module hangs with select
Sriram Srinivasan
sriram at malhar.net
Thu Aug 4 05:19:35 CEST 2005
Thanks Bob, for the prompt response.
I guessed as much. In any case, select over a pipe isn't portable to
Windows, so I converted it to a threaded + blocking I/O. Simpler code
and works well enough for my case (I won't end up spawning too many
threads)
--Sriram
On Aug 4, 2005, at 6:41 AM, Bob Ippolito wrote:
>
> On Aug 3, 2005, at 1:07 PM, Sriram Srinivasan wrote:
>
>
>> I wonder if anyone has seen this behavior or can explain it to me.
>>
>> I Popen a process and monitor its stdout using select, as follows.
>>
>> process = Popen(args,stdin=PIPE, stdout=PIPE, stderr=PIPE)
>> while True:
>> if not (process.returncode == None):
>> print process.returncode
>> break
>> ready,_, _ = select.select([process.stdout, process.stderr],
>> [], [], 5)
>> if ready:
>> for fd in ready:
>> print fd.readline()
>>
>> Now this works fine, in that it dumps out everything that the program
>> can print, but when the exec'd program finishes executing, the select
>> () call just hangs. The timeout on the select has no effect.
>>
>
> I'm relatively sure that subprocess module is not suitable for non-
> blocking IO like that... Check the docs or shoot a message over to
> python-list, I'm sure someone there knows.
>
> -bob
>
>
>
>
More information about the Pythonmac-SIG
mailing list