python调用外部程序非阻塞方式

时间:2013-06-07 14:33:45

标签: python background-process

有没有办法在python中调用外部程序,而不是等待它的执行完成?

我试过了,但没有运气:

os.system("external_program &")

通常,如果我在bash shell中调用external_program &,它将作为后台进程执行。 我怎么能在python中做到这一点?因为,我的特殊情况,创建另一个线程不起作用。完成主python脚本后,外部程序应继续执行。

2 个答案:

答案 0 :(得分:4)

是的,请使用subprocess module。例如:

p = subprocess.Popen(['external_program', 'arg1', 'arg2'])
# Process is now running in the background, do other stuff...
...
# Check if process has completed
if p.poll() is not None:
    ...
...
# Wait for process to complete
p.wait()

答案 1 :(得分:0)

忘掉os.system()。它已被弃用,以支持subprocess module

它为几乎每个可以想象的用例提供了一种执行子程序的方法。