在集群上为多个输入并行执行脚本

parallel execution of script on cluster for multiple inputs

我有一个脚本 pytonscript.py,我想 运行 处理 500 个样本。我有 50 个 CPU 可用,并希望 运行 脚本并行使用每个样本 1 CPU,以便 50 个样本不断 运行 1 CPU每个。有什么想法可以在不使用不同输入输入 500 行的情况下进行设置吗?我知道如何为每个样本制作一个循环,但不知道如何并行制作 50 个样本 运行ning。我想 GNU 并行是一种方式?

在文件夹 samples 中输入样本:

样本1 样品2 样品2 ... 样本500

pytonscript.py -i samples/sample1.sam.bz2 -o output_folder

GNU xargs 怎么样?

printf '%s[=10=]' samples/sample*.sam.bz |
xargs -0L1 -P 50 pytonscript.py -o output_dir -i

这会同时为每个文件启动一个新的 python 脚本实例,同时保持最多 50 个。

如果通配符 glob 扩展不够具体,您可以使用 bash 的 extglob:shopt -s exglob; # samples/sample+([0-9]).sam.bz