繁体   English   中英

如何在 shell 中并行运行 python 中的依赖脚本?

[英]How to run dependent scripts in python in parallel in shell?

我有 6 个脚本称为:

A_1.py, B_1.py, C_1.py
A_2.py, B_2.py, C_2.py 

如何使用以下相关逻辑运行这些脚本,其中 C 脚本应该在 B 上运行(并行)完成,同时在 shell 中按顺序运行 A 和 B 脚本?

在此处输入图像描述

除非我误解了你的表,否则不会比这更难:

A_1.py   # Start A_1
B_1.py   # then B_1

# We can now start A_2 followed by B_2, along with C_1 in parallel    
{ A_2.py ; B_2.py; } &
C_1.py &

# Now wait for all of those to complete, and start C_2
wait
C_2.py

我以前从未这样做过,但我相信 makefile 是前进的方向:

一个 Makefile 由一组规则组成。 规则通常如下所示:

targets : prerequisities
   command
   command
   command

targets是文件名,以空格分隔。 通常,每条规则只有一个。 这些命令是通常用于制作目标的一系列步骤。 这些需要以制表符开头,而不是空格。 先决条件也是文件名,以空格分隔。 这些文件需要在运行目标命令之前存在。

因此,假设您要运行 5 个命令: cmd1cmd2cmd3cmd4cmd5 假设以下依赖项:

  • cmd1cmd3没有依赖关系
  • cmd2依赖于来自cmd1和 cmd4 的cmd4
  • cmd4依赖于cmd1的 output
  • cmd5取决于cmd4cmd3的 output 。

在这种情况下,Makefile 看起来像:

all: cmd1.run cmd2.run cmd3.run cmd4.run cmd5.run

cmd1.run : 
   cmd1
   touch cmd1.run

cmd2.run : cmd1.run cmd4.run
   cmd2
   touch cmd2.run

cmd3.run :
   cmd3
   touch cmd3.run

cmd4.run : cmd1.run
   cmd4
   touch cmd4.run

cmd5.run : cmd3.run cmd4.run
   cmd5
   touch cmd5.run

现在您可以使用简单的命令运行您的脚本:

$ make

有关 hocus-pocus 的更多详细信息: https://makefiletutorial.com/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM