Розміщення декількох завдань на задньому плані - це хороший спосіб використання декількох ядер однієї машини. parallel
проте дозволяє поширювати завдання на декілька серверів вашої мережі. Від man parallel
:
Паралель GNU - це інструмент оболонки для виконання завдань паралельно з використанням одного або декількох комп'ютерів . Типовим входом є список файлів, список хостів , список користувачів, список URL-адрес або список таблиць.
Навіть під час роботи на одному комп’ютері parallel
дає набагато більший контроль над паралельністю ваших завдань. Візьміть цей приклад зі man
сторінки:
To convert *.wav to *.mp3 using LAME running one process per CPU core
run:
parallel lame {} -o {.}.mp3 ::: *.wav
Гаразд, ви могли б зробити те ж саме і з
for i in *wav; do lame "$i" -o "${i%.wav}.mp3" & done
Однак це довше і громіздкіше, і що ще важливіше, запустить стільки завдань, скільки є .wav
файлів. Якщо ви запускаєте це на кількох тисячах файлів, швидше за все, нормальний ноутбук поставить на коліна. parallel
з іншого боку, запустить по одній роботі на ядро процесора і збереже все приємне та охайне.
В основному, parallel
пропонує вам можливість точно налаштувати, як виконуються ваші завдання, і скільки доступних ресурсів вони повинні використовувати. Якщо ви дійсно хочете побачити силу цього інструменту, перегляньте його посібник або, принаймні, приклади, які він пропонує.
Просте фонове зображення насправді ніде не має рівня витонченості, яке можна порівняти з паралельним. Щодо того, чим він parallel
відрізняється xargs
, натовп GNU тут приємно розбився . Деякі з найбільш помітних моментів:
- xargs погано має справу зі спеціальними символами (такими як пробіл, "і").
- xargs може виконувати задану кількість завдань паралельно, але не підтримує паралельне виконання завдань з числом cpu-ядер паралельно.
- xargs не підтримує групування результатів, тому вихід може працювати разом, наприклад, перша половина рядка відбувається з одного процесу, а остання половина рядка - з іншого процесу.
- xargs не підтримує впорядкування виводу, тому, якщо паралельно виконувати завдання, використовуючи xargs, вихід другого завдання не може бути відкладений, поки не буде виконано перше завдання.
- xargs не підтримує виконання завдань на віддалених комп'ютерах.
- xargs не підтримує заміну контексту, тому вам доведеться створити аргументи.
parallel
синтаксис, ще один новий бренд клавіатури, що запам'ятовується. Але я здогадуюсь, що авто балансування по ядрах / робочих місцях того варте ...?