Python中的子流程调用会挂起吗?也就是说,子进程调用是否与其余Python代码在同一线程中运行,或者它是非阻塞模型?关于此事,我在文档或SO中找不到任何内容。谢谢!
subprocess
模块中的大多数方法都处于阻塞状态,这意味着它们希望子过程在返回之前完成。但是,subprocess.Popen
是非阻塞的。
result = subprocess.call(cmd) # This will block until cmd is complete
p = subprocess.Popen(cmd) # This will return a Popen object right away
一旦有了Popen
对象,就可以使用poll
实例方法查看子流程是否完整而没有阻塞。
if p.poll() is None: # Make sure you check against None, since it could return 0 when the process is complete.
print "Process is still running"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句