gpt4 book ai didi

Bash:如何简单地并行化任务?

转载 作者:行者123 更新时间:2023-11-29 08:48:56 26 4
gpt4 key购买 nike

我正在编写一个小脚本,用于在数百个 PNG 文件上调用“PNGOUT”实用程序。我只是这样做了:

find $BASEDIR -iname "*png" -exec pngout {} \;

然后我查看了我的 CPU 监视器,发现只使用了一个核心,这很可悲。

在这个双核、四核、八核和六核(?)桌面时代,我如何简单地将此任务与 Bash 并行化? (这不是我第一次有这样的需求,因为很多这些实用程序都是单线程的......我已经遇到过 mp3 编码器的情况)。

在后台运行所有 pngout 就可以了吗?那么我的find 命令会是什么样子呢? (我不太确定如何混合查找和 '&' 字符)

我如果有三百张图片,这就意味着在三百个进程之间交换,这看起来不太好吧!?

或者我应该将大约三百个文件复制到 “nb dirs” 中,其中 “nb dirs” 将是核心数,然后同时运行 “nb 发现”? (这已经足够接近了)

但是我该怎么做呢?

最佳答案

回答我自己的问题...事实证明,xargs 命令有一个相对不为人知的功能可用于实现此目的:

find . -iname "*png" -print0 | xargs -0 --max-procs=4 -n 1 pngout

宾果游戏,四核机器上的即时 4 倍加速:)

关于Bash:如何简单地并行化任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002493/

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