linux - Unix 环境中的多线程/并行 Bash 脚本

标签 linux multithreading bash unix parallel-processing

我有多个 bash 脚本,我试图在主 bash 脚本中“并行化”。

Bash 脚本:

#!/bin/bash
SHELL=/bin/bash

bash /home/.../a.sh &
bash /home/.../b.sh &
wait
bash /home/.../c.sh &
bash /home/.../d.sh &
bash /home/.../e.sh &
wait
echo "Done paralleling!"
exit 0

我已经正常运行脚本(没有&符号)和使用&符号,我没有看到处理时间有任何明显差异,这让我相信某些东西可能没有正确编码/最有效的方式。

最佳答案

在经典的计算机科学理论中,资源争用被称为“抖动”。

(在美好的过去,当一个 5 兆字节的磁盘驱动器可能只有一台小型洗衣机那么大时,我们过去称其为“Maytag 模式”,因为这个可怜的东西看起来就像一台 Maytag 洗衣机“自旋”循环!)

如果绘制由争用引起的性能曲线,它会向上倾斜,然后突然呈“肘”形:它直线上升,呈指数级增长。我们称之为“碰壁”。

在这个脚本上摆弄的一件有趣的事(如果您只是好奇...) 是在几个地方放置wait 语句。 (确保你做的是正确的......)允许,比如说,两个实例运行,等待所有实例完成,然后再运行三个,依此类推在。看看这是否更快,如果是,请尝试三个。等等。您可能会找到一个“最佳位置”。

或者……不是。 (不要花太多时间在这上面。看起来不值得。)

关于linux - Unix 环境中的多线程/并行 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078962/

相关文章:

linux - Centos命令行编辑CSV文件

c++ - 在多线程应用程序中安全使用迭代器

c - 细粒度多线程——一个工作任务应该做多少事情?

bash - 基本流/sed? bash 脚本,在每一行执行子字符串

bash - bash shell 脚本中大于 255 的数字

regex - sed 4.2.2 中的数字匹配错误?

linux - 将Window Api---GetVolumeInformation移植到Linux

python - 庆典 : virtualenv: command not found "ON Linux"

c - 制作一个/dev/hwrng 内核模块,它使用光标位置来生成熵

javascript - 为什么 JavaScript 不支持多线程?