وظائف Bash المتوازية باستخدام For Loop

Wzayf Bash Almtwazyt Bastkhdam For Loop



توجد العديد من الطرق في Linux لتشغيل أوامر متعددة أو نصوص Bash بالتوازي. تتمثل إحدى الطرق في استخدام حلقة 'for' في نص Bash لتشغيل مهمة موازية. هذه الحلقة مفيدة جدًا لتشغيل الوظائف المتوازية باستخدام الأمر 'seq'. يتم عرض الطرق المختلفة لتنفيذ الوظائف المتوازية باستخدام حلقة 'for' في هذا البرنامج التعليمي.

أمثلة مختلفة للوظائف المتوازية

يتم عرض الطرق المختلفة لتشغيل المهام المتوازية باستخدام حلقة 'for' في هذا الجزء من البرنامج التعليمي.

مثال 1: قم بتشغيل الوظائف المتوازية باستخدام حلقة 'For'

يعد استخدام حلقة 'for' أبسط طريقة لأداء المهام المتوازية في نص Bash النصي. قم بإنشاء ملف Bash باستخدام البرنامج النصي التالي الذي يقوم بتشغيل حلقة 'for' 10000 مرة وطباعة رقمًا بعد التكرار 1000 مرة. تتم هذه المهمة بالتوازي باستخدام حلقة 'for'.







#! / بن / باش

# كرر الحلقة حتى تصل إلى 10000

ل فال في ' فيما يليها 0 1000 10000 ' ؛

يفعل

# اطبع كل رقم 1000

صدى صوت $ val

منتهي

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. هناك 10 أرقام بين 0 و 10000 تمت طباعتها في الإخراج:



  p3



مثال 2: قم بتشغيل الوظائف المتوازية باستخدام حلقة 'For' المتداخلة

قم بإنشاء ملف Bash بالبرنامج النصي التالي الذي يقوم بتشغيل حلقة 'for' المتداخلة التي تنشئ الرقم التسلسلي باستخدام الأحرف الأبجدية من 'A' إلى 'C' والأرقام من 1 إلى 3. في التكرار الأول للحلقة الخارجية وبعدها استكمال تكرار الحلقة الداخلية ، 'A1. CodeIgniter '،' A2. Laravel 'و' A3. CakePHP '. في التكرار الثاني للحلقة الخارجية وبعد الانتهاء من تكرار الحلقة الداخلية ، 'B1. أوراكل '،' B2. MySQL 'و' B3. SQL '. في التكرار الثالث للحلقة الخارجية وبعد الانتهاء من تكرار الحلقة الداخلية ، 'C1. CSS '،' C2. JQuery 'و' C3. JavaScript '.





#الحلقة الخارجية

ل ألفا في { ا ... }

يفعل

#الحلقة الداخلية

ل رقم في { 1 .. 3 }

يفعل

# اطبع الإخراج بناءً على الحالة

لو [ ألفا دولار == 'أ' ] ؛ ثم

قائمة الصفيف = ( 'CodeIgniter' 'Laravel' 'CakePHP' )

أليف [ ألفا دولار == 'ب' ] ؛ ثم

قائمة الصفيف = ( 'وحي' 'MySQL' 'SQL' )

أليف [ ألفا دولار == 'ج' ] ؛ ثم

قائمة الصفيف = ( 'CSS' 'مسج' 'جافا سكريبت' )

يكون

صدى صوت ' ألفا دولار رقم $ . $ {arrayList [$ number-1]} '

منتهي

منتهي

يظهر الناتج التالي بعد تنفيذ البرنامج النصي:



مثال 3: قم بتشغيل الوظائف المتوازية باستخدام حلقة 'For' وأمر 'انتظار'

يعد الأمر 'wait' أمرًا مفيدًا للغاية في Bash ، حيث يتم استخدامه لانتظار مهمة واحدة لإكمال المهمة عند تشغيل عدة مهام. في حالة تشغيل عدد أقل من المهام ، يبدأ أمر 'انتظار' مهمة جديدة بشكل غير متزامن. قم بإنشاء ملف Bash بالبرنامج النصي التالي الذي يقوم بتشغيل وظيفة في الخلفية داخل حلقة 'for' المتداخلة. يتم استخدام الأمر 'انتظار' للانتظار لإكمال جميع العمليات التابعة. يتم تنفيذ الأمرين 'التاريخ' و 'السكون' كعملية في الخلفية.

#الحلقة الخارجية

ل أنا في { 1 .. 2 }

يفعل

#الحلقة الداخلية

ل ي في { 1 .. 3 }

يفعل

لو امتحان ' $ (وظائف | دورة مياه-ل) ' - جي 2 ؛ ثم

انتظر

يكون

# عملية الخلفية

{

تاريخ

ينام 1

} &

منتهي

منتهي

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. تمت طباعة التاريخ والوقت الحاليين 6 مرات من عملية الخلفية لتكرار حلقات 'for' المتداخلة لـ 2 × 3 = 6 مرات:

مثال 4: الاختلافات بين عمليات التشغيل المتسلسلة والمتوازية

قم بإنشاء ملف Bash باستخدام البرنامج النصي التالي الذي يوضح الاختلافات بين التشغيل المتسلسل والتشغيل المتوازي. يتم تعريف الوظيفة prn_char () في البرنامج النصي لطباعة خمسة أحرف بمدة 0.5 ثانية. بعد ذلك ، يتم استخدام الحلقة 'for' الأولى لتشغيل وظيفة prn_char () بالتتابع. تُستخدم حلقة 'for' الثانية لتشغيل وظيفة prn_char () بالتوازي.

# حدد وظيفة لطباعة 5 أحرف بمدة 0.5 ثانية

prn_char ( ) {

ل ج في مرحبًا؛ يفعل

ينام 0.5 ؛

صدى صوت $ ج ؛

منتهي

صدى صوت

}

# قم بتشغيل الوظيفة باستخدام حلقة for بالتتابع

ل خارج في { 1 .. 3 } ؛ يفعل

prn_char ' $ خارج '

منتهي

# قم بتشغيل الوظيفة باستخدام حلقة for بالتوازي

ل خارج في { 1 .. 3 } ؛ يفعل

prn_char ' $ خارج ' &

منتهي


يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. يظهر الفرق بين التشغيل المتسلسل والتشغيل المتوازي في الإخراج. هنا ، تتم طباعة جميع أحرف حلقة 'for' الخاصة بوظيفة prn_char () في وقت واحد في التشغيل المتسلسل وتتم طباعة كل حرف ثلاث مرات في التشغيل المتوازي:

  ص 4

خاتمة

تشغيل الوظائف المتوازية باستخدام حلقة 'for' مطلوب للعديد من أغراض البرمجة. يتم عرض طرق تشغيل المهام المتوازية باستخدام حلقة 'for' في هذا البرنامج التعليمي.