python subprocess.call 不等待

在 Python 中, subprocess.call() 函数可以在后台运行一个子进程并等待其结束。但是,如果你希望子进程在后台运行,而不等待其结束,可以使用 subprocess.Popen() 函数。

subprocess.Popen() 函数可以创建一个新的进程,并返回一个可用于控制和监控该进程的对象。例如:

import subprocess
# 启动一个后台进程
p = subprocess.Popen(['command', 'arg1', 'arg2'])
# 不等待子进程结束
print("子进程已启动,PID =", p.pid)

可以使用 p.poll() 检查子进程是否已结束,使用 p.wait() 等待子进程结束,或使用 p.terminate() 终止子进程。

需要注意的是,如果子进程是一个交互式进程,它可能不会在后台运行。

p = subprocess.Popen(['cmd'], stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE)

上面这句话表示父进程和子进程之间可以交互。

  •