【发布时间】:2012-06-13 12:32:28
【问题描述】:
我目前正在使用 subprocess.call() 来调用另一个程序,但它会阻塞执行线程,直到该程序完成。有没有办法直接启动该程序而无需等待返回?
【问题讨论】:
-
Run Process and Don't Wait 的可能重复项
-
Run Process and Don't Wait 是特定于 Windows 的。
标签: python
我目前正在使用 subprocess.call() 来调用另一个程序,但它会阻塞执行线程,直到该程序完成。有没有办法直接启动该程序而无需等待返回?
【问题讨论】:
标签: python
使用subprocess.Popen 代替subprocess.call:
process = subprocess.Popen(['foo', '-b', 'bar'])
subprocess.call 是subprocess.Popen 的包装器,它调用communicate 来等待进程终止。另见What is the difference between subprocess.popen and subprocess.run。
【讨论】:
subprocess.call 替换为subprocess.popen
call的意义在于等待进程终止。
答案不应该是使用'close_fds'标志吗?
subprocess.Popen(cmd, stdout=None, stderr=None, stdin=None, close_fds=True)
【讨论】: