我试图在8核机器上运行相同代码的24个版本。代码需要花费很多时间来运行,我只想一次运行8个,所以我想知道是否有可能编写一个运行8的bash脚本,然后当这些脚本完成后立即启动下一个8,依此类推? 我基本上不希望所有24个开始然后运行得非常慢! 谢谢, 千斤顶
编辑1 :(关于运行的更多细节) 代码使用以下命令运行: nohup ./MyCode MyInputFile 2> MyOutput中
答案 0 :(得分:5)
您可以使用gnu parallel
seq 1 24 | parallel -P 8 ./myscript
或者使用xargs:
seq 1 24 | xargs -l -P 8 ./myscript
更新
如果你想用Myinput1 Myinput2 Myinput3 ..作为参数运行脚本,你可以做
find . -name 'Myinput*' -print0 | parallel -0 -P 8 ./myscript {1}
或使用您的命令:
find . -name 'Myinput*' -print0 | parallel -0 -P 8 nohup ./myscript {1} 2> Myoutput
答案 1 :(得分:2)
另一种方式:
for f1 in {1..3};do
for f2 in {1..8};do
echo "$f1,$f2;"
nohup ./MyCode MyInputFile 2> Myoutput &
done
wait
done