stringtranslate.com

GNU-параллель

GNU Parallel — это утилита командной строки для Linux и других Unix-подобных операционных систем, которая позволяет пользователю параллельно выполнять сценарии оболочки или команды . GNU Parallel — свободное программное обеспечение , написанное Оле Танге на Perl . Он доступен на условиях GPLv3 . [2]

Применение

Вступительное видео, часть 1
Вступительное видео, часть 2

Чаще всего используется для замены цикла оболочки, например

пока читаем x ; do do_something " $x " сделано < список        

в форму

 список кошек | параллельно сделать_что-то   

где файл listсодержит аргументы do_somethingи где process_outputможет быть пустым.

Сценарии, использующие параллельный код, часто легче читать, чем сценарии, использующие pexec .

Параллельные функции программы также

По умолчанию параллельно выполняется столько заданий, сколько имеется ядер ЦП .

Примеры

находить  .  -имя "*.foo" | параллельная строка grep     

Вышеупомянутое является параллельным эквивалентом:

находить  .  -name "*.foo" -exec grep bar {} +      

При этом выполняется поиск во всех файлах в текущем каталоге и его подкаталогах, имена которых заканчиваются .fooна вхождения строки bar . Команда Parallel будет работать должным образом, если имя файла не содержит символа новой строки . Чтобы обойти это ограничение, можно использовать:

находить  .  -имя "*.foo" -print0 | параллельно -0 строка grep       

Приведенная выше команда использует нулевой символ для разделения имен файлов.

находить  .  -имя "*.foo" | параллельно -X mv {} /tmp/trash       

Приведенная выше команда расширяется {}, добавляя столько аргументов, сколько позволяет длина командной строки, при необходимости распределяя их равномерно между параллельными заданиями. Это может снизить накладные расходы на процесс для кратковременных команд, выполнение которых занимает меньше времени, чем запуск.

находить  .  -maxглубина 1 -тип f -имя "*.ogg" | параллельно -X -r cp -v -p {} /home/media              

Команда выше делает то же самое, что и:

cp  -v  -p  *.ogg  /home/media

Однако первая команда, использующая find/ parallel/ cp, более эффективно использует ресурсы и не остановится с ошибкой, если расширение *.ogg слишком велико для оболочки.

Смотрите также

Рекомендации

  1. Танге, Оле (22 мая 2023 г.). «GNU Parallel 20230522 («Чарльз») выпущен [стабильный]». параллель (список рассылки).
  2. ^ «Параллель GNU». GNU.org .

Внешние ссылки