使用Python立即启动Python子进程

2024-04-25 00:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用subprocess.call启动python脚本的多个实例,但是启动脚本等待每个实例完成。如何防止它一个接一个地等待,而不等待上一个作业完成?在

step = 5
for n in range(5, 11, step):
    subprocess.call(["python", cwd + "/" + "subprocess.py", str(n - step), str(n)])

Tags: 实例inpy脚本forstep作业range
2条回答

来自subprocess文档(emphasis mine):

  • 使用参数运行命令。等待命令完成,然后返回returncode属性。在

考虑改用^{}

这是^{}的记录行为,因此不能那样使用它。相反,您可以使用^{}。在

import subprocess
import os.path

processes = []
step = 5
for n in range(5, 11, step):
    processes.append(subprocess.Popen(['python', os.path.join(cwd, 'child.py'), str(n - step), str(n)]))

for p in processes:    # wait for the child processes to terminate, avoid zombies
    p.wait()

请注意,将文件命名为subprocess.py不是一个好主意,尤其是当它与主脚本位于同一目录中时,import subprocess将导入本地版本,而不是系统版本。我在上面的代码中将其重命名为child.py。在

父进程等待子进程也很重要。在Linux中,忽略这一点会导致"zombie" processes。在

如果您使用的是python3,那么可以研究一下^{}模块的用法。在

相关问题 更多 >