如何根据可用的核心数设置线程?

时间:2018-01-24 14:03:47

标签: snakemake

我的工作流程运行在具有不同CPU数量的不同计算机上,我希望能够设置一个使用"除了N"之外的所有规则的规则。核心。即我希望能够做到:

threads: lambda cores: max(2, cores-4)

但我找不到任何方法来访问我的规则中的核心(即传递给或由命令行上的-j / - 核心推断的值)。有办法做到吗?

1 个答案:

答案 0 :(得分:0)

@bli 在评论中所述,这应该有效:

from multiprocessing import cpu_count

rule test:
    output:
        example.txt
    threads: 
        lambda cores: max(2, cpu_count() - 4)
    shell:
        cmd -{threads}