gpt4 book ai didi

bash - 在 bash 中并行运行有限数量的子进程?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:13 25 4
gpt4 key购买 nike

<分区>

我有大量文件需要进行一些繁重的处理。这种单线程处理使用了几百 MiB 的 RAM(在用于启 Action 业的机器上)并且需要几分钟才能运行。我当前的用例是对输入数据启动 hadoop 作业,但我之前在其他情况下也遇到过同样的问题。

为了充分利用可用的 CPU 能力,我希望能够并行运行多个这些任务。

然而,像这样的一个非常简单的示例 shell 脚本会由于过度的负载和交换而破坏系统性能:

find . -type f | while read name ; 
do
some_heavy_processing_command ${name} &
done

所以我想要的基本上类似于“gmake -j4”所做的。

我知道 bash 支持“等待”命令,但它只会等待所有子进程完成。过去,我创建了执行“ps”命令的脚本,然后按名称 grep 子进程(是的,我知道......丑陋)。

做我想做的事情的最简单/最干净/最好的解决方案是什么?


编辑:感谢 Frederik:是的,这确实是 How to limit number of threads/sub-processes used in a function in bash 的副本“xargs --max-procs=4”就像一个魅力。(所以我投票结束了我自己的问题)

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com