RIc*_*ams 3 shell-script parallelism
我想并行化一个 for 循环,其中循环中的迭代次数可能非常大,例如 10^6。所以,如果我可以创建线程而不是进程会更好。怎么做?代码如下
N=$1
for (( i=0; i < $N; i++ )); do
./random >> output /* in each iteration one random number is appended to
a file "output" */
done
Run Code Online (Sandbox Code Playgroud)
Kev*_*vin 11
random程序所做的只是生成一个数字,
如果你真的真的还是想这样做,这样,做在大块:
for i in {0..9}; do
for ((j = 1; j < $N/10; j++)); do
./random
done > tmp$i &
pid[$i]=$?
done
for i in {0..9}; do
wait ${pid[$i]}
done
cat tmp{0..9} >> outfile
Run Code Online (Sandbox Code Playgroud)