Han*_*Sun 15 python subprocess pipe wait communicate
在等待文档(http://docs.python.org/2/library/subprocess.html#subprocess.Popen.wait)中,它说:
警告
当使用stdout = PIPE和/或stderr = PIPE并且子进程为管道生成足够的输出以阻止等待OS管道缓冲区接受更多数据时,这将会死锁.使用communic()来避免这种情况.
由此,我认为communicate可以取代所有使用的wait()如果retcode是不需要.甚至当stdout或stdin没有管,我也可以代替wait()通过communicate().
是对的吗?谢谢!
小智 7
我怀疑(文档没有明确说明它的2.6)在你不使用PIPEs的情况下,communication()被简化为wait().因此,如果您不使用PIPE,则可以替换wait().
在你的情况做使用管道可以溢出内存缓冲区(见通信()注)一样,你可以填补OS管道缓冲区,所以任何一个不会,如果你正在处理大量输出工作.
实际上,我已经进行了沟通(至少在2.4中),从输出基于行的程序中每行给出一个字符,这对于温和地说是没用的.
另外,"不需要重新编码"是什么意思? - 我相信它设置Popen.returncode就像wait()一样.