首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理makefiles在python数据分析中所做的事情的最先进方法是什么?

处理makefiles在python数据分析中所做的事情的最先进方法是什么?
EN

Stack Overflow用户
提问于 2019-11-08 00:14:01
回答 3查看 1.2K关注 0票数 9

我有一个程序,是一个DAG,它处理和清除某些文件,组合它们,然后做额外的计算。我想要一种运行整个分析管道的方法,如果有任何变化,可以重新运行,但不需要重新处理每个组件。

我读到了Makefiles的故事,认为这听起来是个完美的解决方案。我还意识到,它可能已经过时,而且可能存在更好的替代方案,但据我所知,通常只能找到大量的工作流程调度器工具,这些工具并不完全适合这一目的(例如,气流、Luigi、Nextflow、Dagobah等)。

似乎其中很多都是过度使用调度程序,GUI等,这是我真的不需要的。我只想要一个文件来做以下工作:

  • 很明显,所有的python脚本都需要运行。
  • 显示文件依赖关系,以便完整的重新运行将只重做某些内容已被上游更改的部分。
  • 具有并行化的潜力(不是很有必要)
  • 没有太多的样板

Makefile示例:

代码语言:javascript
复制
.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中运行这样的程序的最佳过程,还是有更好的方法?

EN

回答 3

Stack Overflow用户

发布于 2021-04-08 13:59:45

DVC (Data )包括make的现代重新实现和扩展,它特别适合于数据科学管道(参见这里)。

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

票数 11
EN

Stack Overflow用户

发布于 2019-11-08 01:22:04

这是在python中运行这样的程序的最佳过程,还是有更好的方法?

“最好的”肯定是在旁观者的眼里。但是,如果问题中提出的make-based方法令人满意地代表了问题,那么这是一个很好的方法。make实现是非常广泛可用的,它们的行为得到了很好的理解,并且通常非常适合出现类似于出现的问题。

还有其他与make竞争的构建工具,有些是用Python编写的,毫无疑问还有一些更复杂的软件框架可以应用于这项任务。尽管如此,如果您想专注于工作而不是构建框架来完成工作,那么我看不出有什么理由忽略您已经拥有的make-based解决方案。

票数 2
EN

Stack Overflow用户

发布于 2019-11-10 18:29:51

你提出这个问题的方式,我想说的是,蛇形是要走的路。话虽如此,GNU make可能已经老了,但不会很快消失,它已经过了测试并尝试死亡。

我不会说make,但我认为snakemake中的Makefile示例如下所示:

代码语言:javascript
复制
rule all:
    input:
        ['isles.dat', 'abyss.dat'],

rule make_isles:
    input:
        'books/isles.txt',
    output:
        'isles.dat',
    shell:
        r"""
        python countwords.py {input} {output}
        """

rule make_abyss:
    input:
        'books/abyss.txt',
    output:
        'abyss.dat',
    shell:
        r"""
        python countwords.py {input} {output}
        """

将其保存在一个名为Snakefile的文件中,并将其执行为:

代码语言:javascript
复制
snakemake # vanilla execution   

snakemake -p -n # Print shell commands (-p). Dry-run mode (-n)

snakemake --delete-all-output # Same-ish as .PHONY clean

snakemake在生物信息学中很受欢迎,但它有相当广泛的用途。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58758669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档