我有许多脚本要运行,其中一些脚本有一个或多个必须首先完成的脚本。我已经阅读了许多展示 bash 控制运算符如何工作的示例,但没有找到任何好的示例来解决我试图实现的逻辑的复杂性。
我有 p_01.py 和 p_03.py,它们都是 p_09.py 的要求,但也有只需要 p_01 的单独进程。例如:
((python p_01.py & python p_03.py) && python p_09.py) &
(python p_01.py &&
(
(python p_05.py;
python p_10.py) &
(python p_08.py;
python p_11.py)
)
)
wait $(jobs -p)
我的问题是,如何完成所有仅在其要求后运行的脚本,而不重复运行脚本(例如 p_01.py,您会注意到上面使用了两次)?我正在寻找带有一些细节的概括答案,因为实际上依赖项比上面的示例更多/嵌套。谢谢!
最佳答案
如果您根据脚本的依赖关系来考虑脚本,则很难直接转换为主脚本。考虑使用 make
,它可以让您直接表达这些依赖关系:
SCRIPTS = $(wildcard *.py)
.PHONY: all
all: $(SCRIPTS)
$(SCRIPTS):
python $@
p_05.py p_08.py p_09.py: p_01.py
p_09.py: p_03.py
p_10.py: p_05.py
p_11.py: p_08.py
运行 make -B -j4
将运行所有 Python 脚本,同时最多可并行执行 4 个脚本。
关于python - Bash进程执行逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49806642/