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

时间:2019-04-29 18:06:51

标签: 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有效。语法2在“(((i = i%4));””处引发了通用语法错误。一步,这成了一个谜。

1 个答案:

答案 0 :(得分:0)

“第二个更长”对您没有帮助,因为您使用了伪代码。

也许这会有所帮助:

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