在 Snakemake 中按规则设置集群核心
Set cluster core per rule in Snakemake
我需要下载数百个大文件,并且 运行 每个文件都通过我的 snakemake 管道下载。与我的下游管道相比,文件下载速度很快。我想将并行下载的数量限制为 5,但允许下游处理使用 100 个内核。在snakemake中,有没有办法限制某个规则使用的核心数?我想象 5 个核心不断抓取数据,而我的其他核心正在处理我已经下载的数据。如果我 运行 snakemake 像往常一样使用 100 个内核,它将尝试一次下载所有文件,并使服务器过载。
我已经尝试通过在规则中添加 'threads:1' 来做到这一点,但它并没有像预期的那样工作。我想通过将 'threads:1' 添加到规则中,它应该 return 与在该规则的命令行中使用“-j 1”选项时相同的结果,但它们 return 不同结果。
您可以使用 resources
来限制可以 运行 并行的规则数量。您可以随意命名资源,请参阅 resources documentation。这是一个使用名称 download_streams
.
的示例
蛇文件:
rule r1:
output: touch("{field}.txt")
resources: download_streams=1
shell:
"sleep 2; "
"echo $(date '+%H:%M:%S') Finished downloading {output}"
运行 snakemake download_{1..10}.txt --resources download_streams=2 -j 10 > log.txt
在 log.txt
中给出以下内容
12:00:58 Finished downloading download_1.txt
12:00:58 Finished downloading download_5.txt
12:01:00 Finished downloading download_6.txt
12:01:00 Finished downloading download_8.txt
12:01:02 Finished downloading download_9.txt
12:01:02 Finished downloading download_10.txt
12:01:04 Finished downloading download_3.txt
12:01:04 Finished downloading download_2.txt
12:01:06 Finished downloading download_4.txt
12:01:06 Finished downloading download_7.txt
我需要下载数百个大文件,并且 运行 每个文件都通过我的 snakemake 管道下载。与我的下游管道相比,文件下载速度很快。我想将并行下载的数量限制为 5,但允许下游处理使用 100 个内核。在snakemake中,有没有办法限制某个规则使用的核心数?我想象 5 个核心不断抓取数据,而我的其他核心正在处理我已经下载的数据。如果我 运行 snakemake 像往常一样使用 100 个内核,它将尝试一次下载所有文件,并使服务器过载。 我已经尝试通过在规则中添加 'threads:1' 来做到这一点,但它并没有像预期的那样工作。我想通过将 'threads:1' 添加到规则中,它应该 return 与在该规则的命令行中使用“-j 1”选项时相同的结果,但它们 return 不同结果。
您可以使用 resources
来限制可以 运行 并行的规则数量。您可以随意命名资源,请参阅 resources documentation。这是一个使用名称 download_streams
.
蛇文件:
rule r1:
output: touch("{field}.txt")
resources: download_streams=1
shell:
"sleep 2; "
"echo $(date '+%H:%M:%S') Finished downloading {output}"
运行 snakemake download_{1..10}.txt --resources download_streams=2 -j 10 > log.txt
在 log.txt
12:00:58 Finished downloading download_1.txt
12:00:58 Finished downloading download_5.txt
12:01:00 Finished downloading download_6.txt
12:01:00 Finished downloading download_8.txt
12:01:02 Finished downloading download_9.txt
12:01:02 Finished downloading download_10.txt
12:01:04 Finished downloading download_3.txt
12:01:04 Finished downloading download_2.txt
12:01:06 Finished downloading download_4.txt
12:01:06 Finished downloading download_7.txt