擅长:python、mysql、java
<p>主代码循环看起来不错。可能是管道没有关闭,因为另一个进程正在保持其打开状态。例如,如果脚本启动写入<code>stdout</code>的后台进程,则管道不会关闭。是否确定没有其他子进程仍在运行?</p>
<p>一个想法是当你看到<code>.returncode</code>已经设置好时改变模式。一旦知道主进程已经完成,就从缓冲区读取它的所有输出,但不要等待太久。您可以使用<a href="http://docs.python.org/2/library/select.html" rel="nofollow">select</a>在超时的情况下读取管道。设置几秒钟的超时,您就可以清除缓冲区,而不必等待子进程。</p>