我需要运行2个不同的python脚本:script1和script2并行,没有任何交互。它们的位置如下:
dir0包含文件jobcript.py和2个名为dir1,dir2的目录。 dir1包含script1,dir2包含script2。
jobscript.txt中包含以下几行。
#!/usr/bin/python
import subprocess
exit_code1 = subprocess.call(["python", "./dir1/script1", "-o"], shell=False)
exit_code2 = subprocess.call(["python", "./dir2/script2", "-o"], shell=False)
我在linux中运行了以下命令:
$ python jobscript.py -o
但这是串联的。我怎样才能并行运行它们?解决方案非常感谢!
答案 0 :(得分:0)
你可以获得shell将进程放在后台:
from subprocess import call
call(["python ./dir1/script1 -o &"], shell=True)
call(["python ./dir2/script2 -o &"], shell=True)
“&”告诉bash把它放在后台。如果您希望python脚本等待每个脚本的结果,那么您将需要创建一个线程。我怀疑你想使用bash脚本而不是python:
#!/bin/bash
python ./dir1/script1 -o &
python ./dir2/script2 -o &
P.S。:为什么首先通过子进程从python调用python脚本?您可以直接访问该代码。如果你想让它在parall中运行,那么多线程或多处理就是你的朋友。