bash - 这两种 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
推荐阅读
- entity-framework - linq 表达式树多对多 IQueryable 扩展
- c# - 我想成功,所以当我在空中右键单击跳跃一次时,我不能再这样做了
- scala - flink scala 流错误 java.lang.NoSuchMethodError: org.apache.flink.util.PropertiesUtil.getBoolean(Ljava/util/Properties;Ljava/lang/String;Z)Z
- android - ARCore Android Studio:我可以在搜索地面时更改或删除此图标吗?
- django - 了解 django 中的 request.POST 接收时间
- kubernetes-helm - 如何仅手动触发 Helm 作业的运行?
- android - React Native:uri图像显示黑块,一段时间后应用程序崩溃
- c - 不同的结果对相同的和(C语言)(四舍五入问题)
- javascript - 如何在 NodeJs 中使用 Excel4node 模块在单元格内添加断线
- python - Bokeh - 如何为两个数据源制作一个 HoverTool