bash - 如何在 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
...
解决方案
我想你想要这个:
parallel 'pychimera $(which dockprep.py) -rec receptor{}.pdb -lig ligand{}.mol -cmethod gas -neut' ::: {1..154}
如果您有 8 个以外的 CPU 内核,并且特别想要一次 8 个进程,请使用:
parallel -j8 ...
如果您想查看将在没有实际运行任何内容的情况下运行的命令,请使用:
parallel --dry-run ...
推荐阅读
- python - Pandas:制作字典时DataFrame列不是唯一的
- javascript - 带循环的 setAttribute
- mongodb - mongodb 索引已创建但在查询期间未使用
- sql - 在父子关系上创建层次结构
- dynamics-crm - 无法从功能区工作台隐藏“检查访问”和“打开仪表板”
- android - Android MVVM Databinding EditText 值在 Fragment 中丢失 onConfigurationChanged
- anylogic - Anylogic:具有系统动态的固定生产成本
- javascript - 单击使用ajax的链接时如何使弹出模式出现?
- javascript - 当我尝试使用 TypeScript 运行 Node 的编译版本时,每个默认导入库都会出现错误
- regex - AWK 正则表达式编译失败