我可以从像这样的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
答案 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:在并行运行时要小心处理依赖关系和并发访问问题