我有命令:
python test.py -i input_file -p parameter_1 -o output_file
我想为多个输入文件运行这个,一次4个输入文件(并行),一旦它们完成运行下4个,等等,使用一个bash脚本。
我找不到正确的答案。
我正在尝试以下操作,但不确定是否正确
for (( n=0; n<12; n++ ))
do
((j=j%4)); ((j++==0)) && wait
python test.py -i input_list[n] -p parameter_1 -o output_$n &
done
先谢了!
4条答案
按热度按时间zpqajqem1#
在bash脚本中,您可以尝试以下操作:
amrnrhlw2#
创建作业后需要等待。
可以选择在循环后添加另一个
wait
,以等待少于4个进程。htrmnn0y3#
如果您有GNU Parallel:
如果您的系统有4个CPU线程,则可以删除
-j4
。它将启动4个作业,当一个作业完成时,它将启动下一个作业。
与等待所有4个作业完成相比,这可以提供更好的CPU利用率-特别是在其中一个作业比其他作业花费更长时间的情况下。
vaqhlq814#
如果你只是想一次运行最多4个作业,GNU parallel将是你的理想选择:
但是,如果您希望等到4个作业完成后再开始下一批处理(效率较低),可以将4个作业分组到一个bash函数中,然后对
-j1 -N4
使用parallel: