【发布时间】:2018-11-27 19:02:42
【问题描述】:
有没有一种快速、简单、高效的方式在这个 for 循环中并行运行迭代?
for i in `seq 1 5000`; do
repid="$(printf "%05d" "$i")"
inp="${repid}.inp"
out="${repid}.out"
/command "$inp" "$out"
done
【问题讨论】:
-
只需将
&放在/command行之后。不过,您确定您的系统可以处理 5000 个进程实例吗? -
我不想同时运行所有 5000 个实例,因为那是不可能的。我正在考虑如何,例如在 R 中,某些包可以使用套接字或分叉 (r-bloggers.com/parallel-r-loops-for-windows-and-linux) 在循环中处理令人尴尬的并行工作负载。 bash 中有这样的东西吗?
-
见
xargs -P或GNU parallel。