下面的值“ 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));””处引发了通用语法错误。一步,这成了一个谜。
答案 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