我在一个目录中有几个 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/