برنامج GNU Parallel

برنامج GNU parallel هو أداة سطر أوامر لأنظمة لينكس وغيرها من أنظمة التشغيل الشبيهة بيونكس ، تُمكّن المستخدم من تنفيذ نصوص برمجية أو أوامر بشكل متوازٍ . GNU parallel برنامج مجاني ، كتبه أولي تانج بلغة بيرل ، وهو متاح بموجب شروط رخصة جنو العمومية الإصدار الثالث (GPLv3 ) . [ 2 ]

الاستخدام

فيديو تعريفي، الجزء الأول
فيديو تعريفي، الجزء الثاني

الاستخدام الأكثر شيوعًا هو استبدال حلقة shell، على سبيل المثال

بينما تقرأ x ؛ نفّذ do_something " $x " done < list 

إلى شكل

بالتوازي do_something < قائمة 

listحيث يحتوي الملف على وسائط لـ do_somethingوحيث process_outputقد يكون فارغًا.

غالباً ما تكون البرامج النصية التي تستخدم التوازي أسهل في القراءة من البرامج النصية التي تستخدم pexec .

يتميز البرنامج أيضًا بميزات متوازية

  • تجميع المخرجات القياسية والخطأ القياسي بحيث لا يتم تشغيل مخرجات المهام المتوازية معًا؛
  • الحفاظ على ترتيب المخرجات ليبقى بنفس ترتيب المدخلات؛
  • التعامل بشكل جيد مع أسماء الملفات التي تحتوي على أحرف خاصة مثل المسافة، وعلامة الاقتباس المفردة، وعلامة الاقتباس المزدوجة، وعلامة العطف (&)، والأحرف المشفرة بنظام UTF-8؛

بشكل افتراضي، يقوم النظام بتشغيل عدد من المهام بالتوازي يساوي عدد أنوية وحدة المعالجة المركزية .

أمثلة

ابحث عن . -name "*.foo" | parallel grep bar 

ما سبق هو المكافئ الموازي لما يلي:

ابحث عن . -name "*.foo" -exec grep bar {} + 

يبحث هذا الأمر في جميع الملفات الموجودة في المجلد الحالي ومجلداته الفرعية التي تنتهي أسماؤها .fooبـ . سيعمل الأمر المتوازي كما هو متوقع ما لم يحتوي اسم الملف على سطر جديد . لتجنب هذا القيد، يمكن استخدام:bar

ابحث عن . -name "*.foo" -print0 | parallel -0 grep bar 

يستخدم الأمر أعلاه الحرف الفارغ لفصل أسماء الملفات.

ابحث عن الملفات التي تبدأ بـ ".foo" | اعرضها بالتوازي ثم انقلها إلى / tmp/trash 

يتوسع الأمر المذكور أعلاه {}ليشمل أكبر عدد ممكن من الوسائط، حسب طول سطر الأوامر، ويوزعها بالتساوي بين العمليات المتوازية عند الحاجة. وهذا بدوره يقلل من الحمل الزائد على المعالج للأوامر قصيرة الأمد التي تستغرق وقتًا أقل في التنفيذ من وقت تشغيلها.

ابحث عن الملفات ذات العمق الأقصى 1 والنوع f والاسم "*.ogg" | انسخ الملفات بالتوازي باستخدام الخيارين -X -r و cp -v -p {} /home/media 

الأمر أعلاه يقوم بنفس وظيفة الأمر التالي:

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

ومع ذلك، فإن الأمر السابق الذي يستخدم find/ parallel/ cpأكثر كفاءة في استخدام الموارد ولن يتوقف مع ظهور خطأ إذا كان توسيع *.ogg كبيرًا جدًا بالنسبة للصدفة.

انظر أيضاً

مراجع