وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

کارهای موازی Bash با استفاده از حلقه For

0 2
زمان لازم برای مطالعه: 3 دقیقه


راه های زیادی در لینوکس برای اجرای چندین دستور یا اسکریپت Bash به صورت موازی وجود دارد. یکی از راه ها استفاده از حلقه “for” در اسکریپت Bash برای اجرای یک کار موازی است. این حلقه برای اجرای کارهای موازی با استفاده از دستور seq بسیار مفید است. روش های مختلف اجرای کارهای موازی با استفاده از حلقه “for” در این آموزش نشان داده شده است.

نمونه های مختلف مشاغل موازی

روش های مختلف اجرای کارهای موازی با استفاده از حلقه “for” در این قسمت از آموزش نشان داده شده است.

مثال 1: کارهای موازی را با استفاده از حلقه “For” اجرا کنید

استفاده از حلقه “for” راه ساده تری برای انجام کارهای موازی در اسکریپت Bash است. یک فایل Bash با اسکریپت زیر ایجاد کنید که حلقه “for” را 10000 بار اجرا کند و بعد از تکرار 1000 بار یک عدد چاپ کند. این کار به صورت موازی با استفاده از حلقه “for” انجام می شود.

#!/bin/bash

#حلقه را تکرار کنید تا به 10000 برسد

برای val که در `دنباله 0 1000 10000`;

انجام دادن

#چاپ هر 1000 عدد

اکو $val

انجام شده

خروجی زیر پس از اجرای اسکریپت ظاهر می شود. 10 عدد بین 0 تا 10000 وجود دارد که در خروجی چاپ می شود:

p3

مثال 2: کارهای موازی را با استفاده از حلقه “For” تودرتو اجرا کنید

یک فایل Bash با اسکریپت زیر ایجاد کنید که حلقه “for” تودرتو را اجرا می کند که شماره سریال را با استفاده از حروف الفبای “A” تا “C” و اعداد 1 تا 3 تولید می کند. در اولین تکرار حلقه بیرونی و بعد از آن. تکمیل تکرار حلقه داخلی، “A1. CodeIgniter، “A2. لاراول، و A3. CakePHP” چاپ می شوند. در تکرار دوم حلقه بیرونی و پس از تکمیل تکرار حلقه داخلی، «B1. اوراکل، B2. MySQL» و «B3. SQL” چاپ می شوند. در تکرار سوم حلقه بیرونی و پس از تکمیل تکرار حلقه داخلی، «C1. CSS، “C2. JQuery» و «C3. جاوا اسکریپت” چاپ می شوند.

#حلقه بیرونی

پیشنهاد می‌کنیم بخوانید:  چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

برای آلفا که در {A..C}

انجام دادن

#حلقه داخلی

برای عدد که در {1..3}

انجام دادن

#بر اساس خروجی چاپ کنید روی شرایط

اگر [ $alpha == ‘A’ ]; سپس

arrayList=(“CodeIgniter” “لاراول” “کیک پی اچ پی”)

elif [ $alpha == ‘B’ ]; سپس

arrayList=(“اوراکل” “MySQL” “SQL”)

elif [ $alpha == ‘C’ ]; سپس

arrayList=(“CSS” “JQuery” “جاوا اسکریپت”)

فی

اکو آلفا $$شماره. ${arrayList[$number-1]}

انجام شده

انجام شده

پس از اجرای اسکریپت خروجی زیر ظاهر می شود:

کارهای موازی Bash با استفاده از حلقه Forکارهای موازی Bash با استفاده از حلقه For

مثال 3: کارهای موازی را با استفاده از حلقه “For” و فرمان “Wait” اجرا کنید.

دستور “wait” یک دستور بسیار مفید از Bash است که برای منتظر ماندن یک کار برای تکمیل کار زمانی که چندین کار در حال اجرا هستند استفاده می شود. اگر تعداد کارهای کمتری در حال اجرا باشد، دستور “wait” یک کار جدید را به صورت ناهمزمان شروع می کند. یک فایل Bash با اسکریپت زیر ایجاد کنید که یک کار پس زمینه را در داخل حلقه “for” تودرتو اجرا می کند. دستور “wait” برای انتظار برای تکمیل تمام فرآیندهای فرزند استفاده می شود. دستورات “تاریخ” و “خواب” به عنوان پس زمینه اجرا می شوند process.

#حلقه بیرونی

برای من که در {1..2}

انجام دادن

#حلقه داخلی

برای j که در {1..3}

انجام دادن

اگر تست $(شغل | wc -l) -GE 2; سپس

صبر کن -n

فی

#زمینه process

{

تاریخ

خواب 1

} &

انجام شده

انجام شده

خروجی زیر پس از اجرای اسکریپت ظاهر می شود. تاریخ و زمان فعلی 6 بار از پس زمینه چاپ می شود process برای تکرار حلقه های تو در تو برای 2×3=6 بار:

پیشنهاد می‌کنیم بخوانید:  چگونه بررسی کنیم که آیا آرایه Bash حاوی مقدار است یا خیر

کارهای موازی Bash با استفاده از حلقه Forکارهای موازی Bash با استفاده از حلقه For

مثال 4: تفاوت بین اجراهای متوالی و موازی

یک فایل Bash با اسکریپت زیر ایجاد کنید که تفاوت بین اجرای متوالی و اجرای موازی را نشان می دهد. تابع prn_char() در اسکریپت برای چاپ پنج کاراکتر با مدت زمان 0.5 ثانیه تعریف شده است. در مرحله بعد، اولین حلقه “for” برای اجرای متوالی تابع prn_char() استفاده می شود. دومین حلقه “for” برای اجرای موازی تابع prn_char() استفاده می شود.

#یک تابع برای چاپ 5 کاراکتر با مدت زمان 0.5 ثانیه تعریف کنید

prn_char(){

برای ج که در سلام؛ انجام دادن

خواب 0.5;

اکو -n $ c;

انجام شده

اکو

}

# تابع را با استفاده از حلقه for به صورت متوالی اجرا کنید

برای بیرون که در {1..3}; انجام دادن

prn_char $ بیرون

انجام شده

# تابع را با استفاده از حلقه for به صورت موازی اجرا کنید

برای بیرون که در {1..3}; انجام دادن

prn_char $ بیرون &

انجام شده

خروجی زیر پس از اجرای اسکریپت ظاهر می شود. تفاوت بین اجرای متوالی و اجرای موازی در خروجی نشان داده شده است. در اینجا، تمام کاراکترهای حلقه “for” تابع prn_char() در یک زمان در اجرای متوالی چاپ می شوند و هر کاراکتر سه بار در اجرای موازی چاپ می شود:

p4p4

نتیجه

اجرای کارهای موازی با استفاده از حلقه “for” برای بسیاری از اهداف برنامه نویسی مورد نیاز است. روش های اجرای کارهای موازی با استفاده از حلقه “for” در این آموزش نشان داده شده است.

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-28 17:57:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید