【发布时间】:2012-08-16 23:19:17
【问题描述】:
我正在后台运行一个很长的进程(实际上是另一个 python 脚本)。我需要知道它什么时候完成。我发现Popen.poll() 总是为后台进程返回 0。还有其他方法吗?
p = subprocess.Popen("sleep 30 &", shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
a = p.poll()
print(a)
上面的代码永远不会打印None。
【问题讨论】:
-
您正在使用 shell 后台语法 (
&),这使得子进程启动一个子子进程,然后自行退出 - 这就是为什么您会得到0(process完成)而不是None(仍在运行)
标签: python python-3.x popen subprocess