42

我目前正在使用 subprocess.call() 来调用另一个程序,但它会阻塞执行线程,直到该程序完成。有没有办法简单地启动该程序而无需等待返回?

4

2 回答 2

67

使用subprocess.Popen代替subprocess.call

process = subprocess.Popen(['foo', '-b', 'bar'])

subprocess.call是一个包装器,subprocess.Popen它调用communicate等待进程终止。另请参阅subprocess.popen 和 subprocess.run 之间有什么区别

于 2012-06-10T02:23:40.433 回答
0

答案不应该是使用'close_fds'标志吗?

subprocess.Popen(cmd, stdout=None, stderr=None, stdin=None, close_fds=True)
于 2021-07-06T13:20:50.627 回答