我试图在 8 核机器上运行相同代码的 24 个版本。代码需要很多小时才能运行,而我一次只想运行 8 个,所以我想知道是否可以编写一个运行 8 个的 bash 脚本,然后当这些脚本完成后立即启动下一个 8 个等等?我基本上不希望所有 24 人都开始然后跑得非常慢!谢谢,杰克
编辑1:(有关运行的更多详细信息)代码使用以下命令运行: nohup ./MyCode MyInputFile 2> Myoutput
你可以使用 gnu 并行
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
另一种方式:
for f1 in {1..3};do
for f2 in {1..8};do
echo "$f1,$f2;"
nohup ./MyCode MyInputFile 2> Myoutput &
done
wait
done