在 python 中, subprocess.call 会在每次被调用时产生一个单独的子流程吗?

In python, will subprocess.call produce an individual subprocess every time being invoked?

如果subprocess.call被调用N次,不知是否会创建N个子进程

子进程什么时候关闭?我应该手动杀死它吗?

subprocess.Popen呢?

是的,每次调用 subprocess.call() 或其任何亲属(包括 Popen())时都会产生一个新进程。您不需要正常地明确终止子进程——您只需等待它们退出即可。

subprocess.call 每次调用时都会创建一个进程并等待命令完成。因此,由于等待命令完成的性质,没有真正的并行处理。

subprocess.Popen 也会在每次调用时创建一个进程,但不会等待命令完成。您可以使用 communicate 等待命令完成或调用 kill.

总结一下。使用 subprocess.Popen,您可以更好地控制您创建的流程。

描述在python documentation