Параллельный GNU - Википедия - GNU parallel
Эта статья слишком полагается на Рекомендации к основные источники.Сентябрь 2015 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Разработчики) | Проект GNU |
---|---|
Стабильный выпуск | 20191122[1] / 22 ноября 2019 |
Репозиторий | |
Написано в | Perl |
Операционная система | GNU |
Тип | Полезность |
Лицензия | GPLv3 |
Интернет сайт | https://savannah.gnu.org/projects/parallel/ www |
GNU параллельно это командная строка управляемая утилита для Linux и другие Unix-подобный операционные системы, которые позволяют пользователю выполнять ракушка скрипты или команды в параллели. GNU параллельно является бесплатно программное обеспечение, написанный Оле Танге в Perl. Доступно на условиях GPLv3.[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 слишком велико для оболочки.
Смотрите также
Рекомендации
- ^ Танге, Оле (22 ноя 2019). "GNU Parallel 20191122 ('Quantum Supremacy') выпущен [стабильный]". параллельно (Список рассылки).
- ^ "GNU Parallel". GNU.org.