snakemake - 如何在snakemake中设置绑定内存限制
问题描述
我想让 Snakemake 为各个规则设置绑定内存限制。根据snakemake 文档,mem_mb
参数似乎可行,但该作业使用的内存比我分配的要多。
这是一个使用几 GB 内存的简单规则。我希望规则在达到内存限制后停止,但它可以毫无问题地完成。
rule:
output:
"a"
threads: 1
resources:
mem_mb = 100
shell:
"""
python3 -c 'import numpy; x=numpy.ones(1_000_000_000)'
touch a
"""
是否可以使此限制绑定?我想要一个可移植的、适用于 Windows 和 Linux 的解决方案。我在本地使用snakemake,而不是使用批处理调度程序或容器设置。
解决方案
我对此完全没有经验,所以我不能说这是否被推荐或跨平台运行良好,但这似乎适用于我的计算机(Ubuntu):
rule all:
input:
"a"
rule:
output:
"a"
threads: 1
resources:
mem_mb = 100
params:
max_mem=lambda wildcards, resources: resources.mem_mb * 1024
shell:
"""
ulimit -v {params.max_mem}
python3 -c 'import numpy; x=numpy.ones(1_000_000_000)'
touch a
"""
请参阅此处了解更多信息。
我不相信 SnakeMake 为此提供了“开箱即用”的解决方案。
推荐阅读
- reactjs - 如何将 thunk 动作转换为 saga
- java - 使用 java 和 html 进行本地存储
- c# - C# .NET WinForms。Visual Studio 无法识别子文件夹中的命名空间
- neo4j - 如何制作不同颜色的标签?
- c++ - 使用 argv[1] 时出现分段错误
- api - 通过 OTP 重置密码而不是重置链接有什么优势?
- assembly - 需要帮助使用 Visual Studio .asm 文件在汇编语言中显示带小数位的数字
- angular - 路由到另一个父路由时子路由没有动画
- java - 如何在此读取方法中更改我的值 firebase
- c++ - 如何将坐标数组泛化为像素宽的线