在此for循环中是否有一种快速,轻松且有效的方式来运行迭代?
for i in `seq 1 5000`; do
repid="$(printf "%05d" "$i")"
inp="${repid}.inp"
out="${repid}.out"
/command "$inp" "$out"
done
答案 0 :(得分:2)
如果您想利用自己花了这么大价钱向英特尔支付的所有可爱的CPU内核,请转到 GNU Parallel :
seq -f "%05g" 5000 | parallel -k echo command {}.inp {}.out
如果您喜欢这种外观,请在没有-k
(使输出保持顺序)和没有echo
的情况下再次运行。您可能需要将该命令用单引号引起来:
seq -f "%05g" 5000 | parallel '/command {}.inp {}.out'
它将在每个CPU内核上并行运行1个实例,但是,如果要并行运行32个实例,请使用:
seq ... | parallel -j 32 ...
如果要“预计到达时间” ,请使用:
parallel --eta ...
如果要使用进度表,请使用:
parallel --progress ...
如果您使用bash
4+以上的版本,则可以将括号扩展零填充。而且,如果您的ARGMAX
足够大,则可以更简单地使用:
parallel 'echo command {}.inp {}.out' ::: {00001..05000}
您可以使用以下方法检查ARGMAX
:
sysctl -a kern.argmax
,它告诉您参数列表可以有多少个字节。您将需要5,000个5位数字,每个数字加上一个空格,因此最少需要30,000个。
如果您使用的是 macOS ,则可以使用 homebrew 安装 GNU Parallel :
brew install parallel
答案 1 :(得分:1)
var container = document.createElement("div");
container.style.flex = "1 0 100%";
container.style.backgroundColor = "white";
container.style.display = "flex";
container.style.flexDirection = "column";
container.id = "container";