我的目录中有几个PNG图片,并且正在使用optipng优化和缩小图片大小。问题是优化所有文件花费的时间太长。

我有一个四核处理器,我注意到optipng仅使用一个核
当我优化目录时。

这是我正在使用的代码:

ls -1 | while read line
do
    optipng -o7 "$line"
done

读取目录时是否可以为四个不同的文件并行执行optipng

最佳答案

还有另一种涉及xargs的解决方案。

find some/dir/ -iname '*.png' -print0 | xargs -0 -n 1 -P 4 optipng -o7
-P 4启动4个并行进程,而-n 1每个进程最多使用一个文件名。

或者,如果您使用换行符分隔的文件名,请使用:
find some/dir/ -iname '*.png' | sort | xargs -d \\n -n 1 -P 4 optipng -o7

感谢Joe Lencioni comment on a blog

更新:我已经编写了一个shell脚本来并行调用多个图像的zopflipng(比optipng压缩的压缩率更高):zopflipng_in_place

关于linux - 使用多个CPU内核优化目录中的镜像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21801085/

10-14 13:29
查看更多