我正在运行一个命令(准确地说是 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分钟。
top
pngquant
显示同时并行执行两个命令:
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