使用子流程启动多个程序

时间:2019-07-12 23:06:16

标签: python-3.x subprocess

我正在尝试使用python程序来启动多个程序。我面临的问题是,尽管第一个程序在shell中按预期执行,但是第二个程序却从不执行。有没有办法启动第一个程序而没有子进程等待执行第二个程序?

我尝试使用第一个子处理命令,让主程序等待5秒钟,然后启动第二个。

导入子进程

subprocess.call(['xxx','xxxxxx','xxxxxxxx','shell = True'])

time.sleep(5)

subprocess.call(['xxx','-x','xxxxxx'])

我希望程序在shell中启动每个程序,但是只有第一个程序启动。

1 个答案:

答案 0 :(得分:0)

直接使用subprocess模块中的Popen constructor以便在后台启动进程。

由于它有效地启动一个进程,但不等待它完成,所以我想在代码中将其重命名为start。像这样:

from subprocess import Popen as start
process = start(['python', 'process.py'], shell=True)

在您的示例中,您可以给该过程或每个过程足够的时间来完成。但是,建议您等待它们分别完成,然后再退出主脚本:

from subprocess import Popen as start

processes = []

for i in range(3):
    process = start(['python', f'process{i}.py'], shell=True)
    processes.append(process)

for process in processes:
    process.wait()