subprocess.Popen执行脚本卡住了

时间:2016-10-07 00:56:03

标签: python

我正在尝试执行如下命令,但它在try块中是STUCK,如下所示,直到超时启动,python脚本独立执行,任何人都可以建议为什么这样以及如何调试这个?

cmd = "python complete.py"
proc = subprocess.Popen(cmd.split(' '),stdout=subprocess.PIPE )
print "Executing %s"%cmd
try:
    print "In try" **//Stuck here**
    proc.wait(timeout=time_out)
except TimeoutExpired as e:
    print e
    proc.kill()
with proc.stdout as stdout:
    for line in stdout:
        print line,

1 个答案:

答案 0 :(得分:1)

在流程退出后,

proc.stdout无法读取。相反,您需要在进程运行时读取它communicate()会为你做到这一点,但既然你没有使用它,你就可以自己做。

现在,你的进程几乎肯定会挂起来试图写入它的stdout - 它无法做到,因为管道的另一端没有被读取。

另见Using module 'subprocess' with timeout