Jump to content

GNU-параллель

Параллельно
Разработчик(и) Проект GNU
Стабильная версия
20230522 [ 1 ] / 22 мая 2023 г .; 14 месяцев назад ( 22.05.2023 )
Репозиторий
Написано в Перл
Операционная система ГНУ
Тип Утилита
Лицензия лицензия GPLv3
Веб-сайт www .gnu .org /программное обеспечение /параллельно /  Edit this on Wikidata

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

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

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

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

while read x; do 
    do_something "$x"
done < list

в форму

cat list | parallel do_something

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

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

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

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

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

find . -name "*.foo" | parallel grep bar

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

find . -name "*.foo" -exec grep bar {} +

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

find . -name "*.foo" -print0 | parallel -0 grep bar

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

find . -name "*.foo" | parallel -X mv {} /tmp/trash

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

find . -maxdepth 1 -type f -name "*.ogg" | parallel -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.org .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4768e0d1c06e335d2d418d3cc54bbc4e__1721533560
URL1:https://arc.ask3.ru/arc/aa/47/4e/4768e0d1c06e335d2d418d3cc54bbc4e.html
Заголовок, (Title) документа по адресу, URL1:
GNU parallel - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)