一、并行实例
想象一个场景,我们有一个循环,循环中执行一条命令,该命令执行一次耗时2s。执行该循环20次。
1 串行执行
-
查看串行脚本代码
-
串行执行结果
从运行结果可以看到串行执行时间共计40s秒左右,执行依次执行。
2 并行执行
- 并行执行代码
- 并行执行结果
从运行结果可以看到并行时间缩短到2s左右,20个指令被提交到后台并行运行。
二、并行度控制
上面的示例中,for 循环会将20个指令全部提交到后台。如果命令开销大且循环次数多,此方法会造成设备资源过度消耗。所以实现对并行度的控制是非常有必要的。即当提交到后台的任务数到达一定数量之后,就等待前面提交的任务完成之后再进行提交。
- 并行度控制代码
设置并行数是4个并行任务。 - 并行度执行结果
三、并行度控制 parallel
seq 20 | parallel -j 4 "echo {}; sleep 1"