【发布时间】:2020-03-04 14:53:40
【问题描述】:
我有一个 DAG 程序,它处理和清理某些文件,将它们组合起来,然后进行额外的计算。我想要一种方法来运行整个分析管道,并在有任何变化时重新运行,但不必重新处理每个组件。
我阅读了有关 Makefile 的信息,并认为这听起来像是完美的解决方案。我也知道它可能已经过时并且可能存在更好的替代方案,但据我所知,我通常只会发现大量不太适合此目的的工作流调度程序工具(例如,Airflow、Luigi、 Nextflow、Dagobah等)
似乎其中许多对于我并不真正需要的调度程序、GUI 等来说都是多余的。我只想要一个执行以下操作的文件:
- 让所有需要运行的 python 脚本一目了然
- 显示文件依赖关系,以便完全重新运行只会重做上游已更改的部分
- 有可能进行一些并行化(不是很有必要)
- 没有太多样板文件
Makefile 示例:
.PHONY : dats
dats : isles.dat abyss.dat
isles.dat : books/isles.txt
python countwords.py books/isles.txt isles.dat
abyss.dat : books/abyss.txt
python countwords.py books/abyss.txt abyss.dat
.PHONY : clean
clean :
rm -f *.dat
这是在 python 中运行这样的最佳程序还是有更好的方法?
【问题讨论】:
标签: python python-3.x makefile scheduled-tasks