在多个线程上运行命令

在多个线程上运行命令

我正在运行一个命令(准确地说是 pngquant:https://github.com/pornel/pngquant) 在终端窗口中。我注意到,如果我打开 4 个终端窗口,并在每个窗口运行 pngquant 命令,我可以获得 4 倍的速度提升,在与以前相同的时间内有效压缩 4 倍的图像。

因此我采用了这种方法,并为每个 pngqunat 进程分配了一部分我想要压缩的图像,从而有效地在多个线程上创建了多个进程

你能在不使用我所用的技巧的情况下在多个线程上运行命令吗?我只想说“对所有这些图像运行 pngquant 压缩并使用所有可用的线程。”

答案1

就你的情况而言,使用 GNU xargs 应该很简单。下面是使用 4 个线程 (-P4) 的示例

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

答案2

这只有当工具开发人员开发了多线程功能时才有可能,但您的工具似乎并非如此。

然而,在很多情况下,你可以使用类似GNU 并行来克服这个限制,它会为您自动完成这一操作。

相关内容