在多个线程上运行命令

在多个线程上运行命令

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

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

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

答案1

您正在寻找完全相同的系统这个最近问题需要。给出的答案(基于 python 并发的脚本)只要针对您的简单情况稍加调整,就能完美满足您的需求。

答案2

将我之前的评论扩展为答案。

Gnu并行是一种命令行工具,旨在同时运行作业,从而利用多个线程、核心、CPU 和 PC。参数现在通过添加开关提供了类似的功能-P

我在双核上为你运行了一个测试虚拟专用服务器,用于pngquant转换一堆.png文件(126 张图像,平均大小为 9MB)。

pngquant *.png耗时26分钟。

find . -iname "*.png" | parallel pngquant {}耗时14分钟。

toppngquant显示同时并行执行两个命令:

  PID USER    PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 5808 user    20   0   70948  59164   2140 R 100.0  2.9   0:03.49 pngquant
 5811 user    20   0   70952  61000   2024 R  99.3  3.0   0:05.67 pngquant

相关内容