在多个线程上运行命令

我正在terminal窗口中运行一个命令(pngquant是准确的: https : //github.com/pornel/pngquant )。 我注意到,如果我打开4个terminal窗口,并在每个窗口运行pngquant命令,我得到了4倍的速度增加,有效地压缩4倍的图像在同一时间以前。

所以我使用了这种方法,并且为每个pngqunat进程分配了一部分我想要压缩的图像,在multithreading上有效地创build了多个进程

你可以在multithreading上运行命令,而不用做这个技巧吗? 我只想说“在所有这些图像上运行pngquant压缩并使用所有线程可用”。

在你的情况下,使用GNU xargs应该很简单。 这里使用4个线程(-P4)

find . -name "*.png*" -not -name "*8.png" -print0 | xargs -0 -n1 -P4 pngquant 64 

这只有在该工具的开发人员使用multithreadingfunction开发它时才有可能,而您的工具似乎不是这种情况。

但是,在很多情况下,你可以使用像GNU Parallel这样的东西来克服这个限制,它会自动为你做。