如何在linux中提交2个作业(在2个不同的目录中并行运行2个python脚本)?

时间:2016-02-21 02:51:16

标签: python linux

我需要运行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

但这是串联的。我怎样才能并行运行它们?解决方案非常感谢!

1 个答案:

答案 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中运行,那么多线程或多处理就是你的朋友。