这两种 bash 并行化语法之间有什么区别?



下面的值"4"是CPU线程数。想法是按 4 批运行任务,并等到当前批次完成,然后再开始下一批。

语法 1:

while read something; do
((++i%4==0)) && wait
(
 task using something as input;
)
done < input_file.txt

语法 2:

while read something; do
((i=i%4)); ((i++==0)) && wait
(
 task using something as input;
)
done < input_file.txt

对我来说,它们的工作方式相同,只是第二个更长。但是当在云中运行时(AWS ubuntu 14.04(,只有语法 1 有效。syntax2 在 "((i=i%4((;" 步骤处抛出了一个通用语法错误,它成为一个谜。

"第二个更长"无济于事,因为你使用了伪代码。

也许这会有所帮助:

while read x; do ((i=++i%4)) || wait; sleep $x & done < input_file.txt

我的input_file.txt

10
9
8
7
6
5
4
3
2
1

最新更新