处理 makefile 为 Python 数据分析所做的工作的最先进方法是什么?

tee*_*pee 8 python makefile scheduled-tasks python-3.x

我有一个 DAG 程序,它处理和清理某些文件,将它们组合起来,然后进行额外的计算。我想要一种方法来运行整个分析管道,并在发生任何变化时重新运行,而不必重新处理每个组件。

我阅读了 Makefiles 并认为这听起来是完美的解决方案。我也知道它可能已经过时,并且可能存在更好的替代方案,但据我所知,我通常只找到大量不太适合此目的的工作流调度程序工具(例如,Airflow、Luigi、 Nextflow、Dagobah 等等等等)

似乎其中许多对于我并不真正需要的调度程序、GUI 等来说都是多余的。我只想要一个执行以下操作的文件:

  • 很明显所有需要运行的python脚本是什么
  • 显示文件依赖关系,以便完全重新运行只会重做上游已更改的部分
  • 有一些并行化的潜力(不是很有必要)
  • 没有太多的样板

生成文件示例:

.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
Run Code Online (Sandbox Code Playgroud)

这是在python中运行类似程序的最佳程序还是有更好的方法?

amk*_*a00 10

DVC(数据版本控制)包括make特别适合数据科学管道的现代重新实现和扩展(请参阅此处)。

在 DVC 中处理管道make对许多场景都有重要的好处,例如依赖文件校验和而不是修改时间。相反,make在某种意义上更简单,并且具有强大的宏机制。尽管如此,makefile 的语法中有一些非常微妙的元素(例如,多个输出、中间文件),并且make通常不支持文件名中的空格。


Joh*_*ger 2

这是在 python 中运行类似操作的最佳过程还是有更好的方法?

“最好”肯定是情人眼里出西施。但是,如果make问题中提出的基于 - 的方法能够令人满意地代表问题,那么这是一个方法。 make这些实现非常广泛可用,并且它们的行为很好理解并且通常非常适合解决诸如所提出的问题。

还有其他构建工具可以与 竞争make,其中一些是用 Python 编写的,并且毫无疑问还有一些更深奥的软件框架可以应用于该任务。然而,如果您想专注于完成工作而不是构建框架来完成工作,那么我认为没有任何理由忽略make您已有的基于 - 的解决方案。