Python使用subprocess.Popen导致子进程hang住

subprocess用于在Python内部创建一个子进程,比如调用shell脚本等。

举例:

p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stdin = subprocess.PIPE, shell = True)
p.wait()
// hang here
print "subprocess finished"

在python的官方文档中对这个进行了解释:

原因是stdout产生的内容太多,超过了系统的buffer

解决方法是使用communicate()方法。

p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stdin = subprocess.PIPE, shell = True)
stdout, stderr = p.communicate()
p.wait()
print "subprocess finished"

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/b7ff58140f30428d40d18df36f8039db.html