同时运行多个Python脚本然后按顺序运行

时间:2017-02-06 16:32:13

标签: python bash scripting

我可以从像这样的bash脚本同时运行多个Python脚本;

#!/bin/bash
python pr1.py & 
python pr2.py &
python aop.py &
python loader.py &

但是,如果我想要一个批次同时触发并且在它们运行之后,再按顺序启动它会怎样。这会有用吗?:

#!/bin/bash
python pr1.py & 
python pr2.py &
python ap.py &
python loader.py
python cain.py
python able.py

4 个答案:

答案 0 :(得分:12)

一旦你把&最后,它作为后台进程运行。因此所有以&结尾的脚本并行运行。

要按顺序运行其他3个脚本,您可以尝试两个:

仅当前面的脚本成功运行时,

&&才会运行下一个脚本

python loader.py && python cain.py && python able.py 
无论前面的脚本

的结果如何,

||都会顺序运行脚本

python loader.py || python cain.py || python able.py

答案 1 :(得分:5)

在bash脚本中,您只需添加wait命令,如下所示:

#!/bin/bash
python pr1.py & 
python pr2.py &
python ap.py &
wait
python loader.py
python cain.py
python able.py
显然,

wait将等待所有工作(你解雇的后台进程)完成以继续。

答案 2 :(得分:0)

与&命令您在后台运行脚本。您可以在循环中添加一个检查以运行命令作业,并查看它是否继续返回作业列表。当它停止时,你可以继续你的下一批python调用。

答案 3 :(得分:0)

为什么不尝试一下?

#1.py
import time
time.sleep(3)
print("First script")

#2.py
import time
time.sleep(3)
print("Second script")

如果你把进程放到后台,你会同时看到两个python脚本的输出。

#!/bin/bash
python 1.py &
python 2.py &

如果在没有&的情况下执行它,那么您将在6秒后看到第二个脚本的输出。

#!/bin/bash
python 1.py
python 2.py

PS:在并行运行时要小心处理依赖关系和并发访问问题