如何在BASH上运行使用GNU parallel获取多个参数的python脚本?

如何在BASH上运行使用GNU parallel获取多个参数的python脚本?,bash,gnu-parallel,multiple-arguments,Bash,Gnu Parallel,Multiple Arguments,我有一个python脚本,通常从BASH shell执行,如下所示: pychimera $(which dockprep.py) -rec receptor1.pdb -lig ligand1.mol -cmethod gas -neut 正如您所看到的,一些参数需要输入,例如-rec,而其他参数则不需要输入,例如-neut。我必须用不同的输入执行这个脚本154次。如何使用GNU并行脚本并行运行8个线程 pychimera $(which dockprep.py) -rec receptor

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

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
...
示例commands.txt生成器脚本:

#!/usr/bin/env bash

if [ "$#" -ne 1 ]; then
    echo "missing parameter: n"
    exit 1
fi

rm commands.txt 2> /dev/null 
dockp=$(which dockprep.py)

for((i=1;i<=$1;i++)); do
  echo "pychimera $dockp -rec receptor$i.pdb -lig ligand$i.mol -cmethod gas -neut" >> commands.txt
done
如果你需要n是100

要并行运行命令,请执行以下操作:

$ module load parallel
$ parallel < commands.txt
我想你想要这个:

parallel 'pychimera $(which dockprep.py) -rec receptor{}.pdb -lig ligand{}.mol -cmethod gas -neut' ::: {1..154}
如果您的CPU核不是8个,并且一次特别需要8个进程,请使用:

parallel -j8 ...
如果要查看在不实际运行任何命令的情况下运行的命令,请使用:

parallel --dry-run ...

您需要创建一个包含所有命令的文件。您可以自动生成该文件,我们可以提供足够的信息来帮助您生成该文件。然后模块加载parallel&¶llelparallel --dry-run ...