1

我试图在 8 核机器上运行相同代码的 24 个版本。代码需要很多小时才能运行,而我一次只想运行 8 个,所以我想知道是否可以编写一个运行 8 个的 bash 脚本,然后当这些脚本完成后立即启动下一个 8 个等等?我基本上不希望所有 24 人都开始然后跑得非常慢!谢谢,杰克

编辑1:(有关运行的更多详细信息)代码使用以下命令运行: nohup ./MyCode MyInputFile 2> Myoutput

4

2 回答 2

5

你可以使用 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
于 2013-09-18T17:04:45.457 回答
2

另一种方式:

for f1 in {1..3};do 
   for f2 in {1..8};do
     echo "$f1,$f2;"
     nohup ./MyCode MyInputFile 2> Myoutput &
   done
   wait
done
于 2013-09-18T17:51:08.597 回答