Назад | Перейти на главную страницу

запустить команду в нескольких потоках

Я запускаю команду (точнее pngquant: https://github.com/pornel/pngquant) в окне терминала. Я заметил, что если я открываю 4 окна терминала и запускаю команду pngquant в каждом из них, я получаю 4-кратное увеличение скорости, эффективно сжимая в 4 раза больше изображений за то же время, что и раньше.

Поэтому я использовал этот подход и назначил каждому процессу pngqunat часть изображений, которые я хочу сжать, эффективно создав несколько процессов в нескольких потоках.

Можете ли вы запустить команду в нескольких потоках, не выполняя этих трюков, которые проделал я? Я хотел бы просто сказать «запустите сжатие pngquant для всех этих изображений и используйте все доступные потоки».

Это возможно только в том случае, если разработчик инструмента разработал его с возможностью многопоточности, что, по-видимому, не относится к вашему инструменту.

Однако во многих случаях вы можете использовать что-то вроде GNU Parallel чтобы преодолеть это ограничение, и он автоматизирует это за вас.

В вашем случае использование GNU xargs должно быть простым. Вот пример с использованием 4 потоков (-P4)

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