Параллельный GNU - Википедия - GNU parallel

Параллельный
GNU-parallel.svg
Разработчики)Проект GNU
Стабильный выпуск
20191122[1] / 22 ноября 2019; Год назад (2019-11-22)
Репозиторий Отредактируйте это в Викиданных
Написано вPerl
Операционная системаGNU
ТипПолезность
ЛицензияGPLv3
Интернет сайтhttps://savannah.gnu.org/projects/parallel/ www.gnu.org/программного обеспечения/ параллельно/, https:// саванна.gnu.org/ проекты/ параллельно/ Отредактируйте это в Викиданных

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

использование

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

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

за х в `список кошек` ; делать     сделай что-нибудь "$ x"сделано | process_output

к форме

список кошек | параллельный do_something | process_output

где файл список содержит аргументы в пользу сделай что-нибудь и где process_output может быть пустым.

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

Параллельные возможности программы также

  • группировка стандартный вывод и стандартная ошибка поэтому вывод параллельно выполняемых заданий не выполняется одновременно;
  • сохранение порядка вывода в том же порядке, что и при вводе;
  • удобная работа с именами файлов, содержащими специальные символы, такие как пробел, одинарная кавычка, двойная кавычка, амперсанд и символы в кодировке UTF-8;

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

Примеры

найти . -имя "* .foo" | параллельная панель grep

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

найти . -имя "* .foo" -exec grep bar {} +

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

найти . -имя "* .foo" -print0 | параллельный -0 grep bar

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

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

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

найти . -Максимальная глубина 1 -type f -name "* .ogg" | параллельный -X -r cp -v -p {} / главная / медиа

Приведенная выше команда делает то же самое, что и:

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

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

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

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

  1. ^ Танге, Оле (22 ноя 2019). "GNU Parallel 20191122 ('Quantum Supremacy') выпущен [стабильный]". параллельно (Список рассылки).
  2. ^ "GNU Parallel". GNU.org.

внешняя ссылка