我正在尝试使用python程序来启动多个程序。我面临的问题是,尽管第一个程序在shell中按预期执行,但是第二个程序却从不执行。有没有办法启动第一个程序而没有子进程等待执行第二个程序?
我尝试使用第一个子处理命令,让主程序等待5秒钟,然后启动第二个。
导入子进程
subprocess.call(['xxx','xxxxxx','xxxxxxxx','shell = True'])
time.sleep(5)
subprocess.call(['xxx','-x','xxxxxx'])
我希望程序在shell中启动每个程序,但是只有第一个程序启动。
答案 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()