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

Gok*_* Ka 4 python background-process

有没有办法在python内部调用外部程序而不等待其执行完成?

我试过这个,但没有运气:

os.system("external_program &")
Run Code Online (Sandbox Code Playgroud)

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

Ada*_*eld 5

是的,使用subprocess模块。例如:

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()
Run Code Online (Sandbox Code Playgroud)