首页 > 解决方案 > 如何在 BASH 上运行一个使用 GNU 并行接受多个参数的 python 脚本?

问题描述

我有一个通常从 BASH shell 执行的 python 脚本,如下所示:

pychimera $(which dockprep.py) -rec receptor1.pdb -lig ligand1.mol -cmethod gas -neut

如您所见,有些参数需要输入(例如-rec),而有些则不需要(例如-neut)。我必须使用不同的输入执行此脚本 154 次。如何使用 GNU 并行脚本并行运行 8 个线程?

pychimera $(which dockprep.py) -rec receptor1.pdb -lig ligand1.mol -cmethod gas -neut
pychimera $(which dockprep.py) -rec receptor2.pdb -lig ligand2.mol -cmethod gas -neut
pychimera $(which dockprep.py) -rec receptor3.pdb -lig ligand3.mol -cmethod gas -neut
...

标签: bashgnu-parallelmultiple-arguments

解决方案


我想你想要这个:

parallel 'pychimera $(which dockprep.py) -rec receptor{}.pdb -lig ligand{}.mol -cmethod gas -neut' ::: {1..154}

如果您有 8 个以外的 CPU 内核,并且特别想要一次 8 个进程,请使用:

parallel -j8 ...

如果您想查看将在没有实际运行任何内容的情况下运行的命令,请使用:

parallel --dry-run ...

推荐阅读