از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
کارهای موازی Bash با استفاده از حلقه For
سرفصلهای مطلب
نمونه های مختلف مشاغل موازی
روش های مختلف اجرای کارهای موازی با استفاده از حلقه “for” در این قسمت از آموزش نشان داده شده است.
مثال 1: کارهای موازی را با استفاده از حلقه “For” اجرا کنید
استفاده از حلقه “for” راه ساده تری برای انجام کارهای موازی در اسکریپت Bash است. یک فایل Bash با اسکریپت زیر ایجاد کنید که حلقه “for” را 10000 بار اجرا کند و بعد از تکرار 1000 بار یک عدد چاپ کند. این کار به صورت موازی با استفاده از حلقه “for” انجام می شود.
#حلقه را تکرار کنید تا به 10000 برسد
برای val که در `دنباله 0 1000 10000`;
انجام دادن
#چاپ هر 1000 عدد
اکو $val
انجام شده
خروجی زیر پس از اجرای اسکریپت ظاهر می شود. 10 عدد بین 0 تا 10000 وجود دارد که در خروجی چاپ می شود:
مثال 2: کارهای موازی را با استفاده از حلقه “For” تودرتو اجرا کنید
یک فایل Bash با اسکریپت زیر ایجاد کنید که حلقه “for” تودرتو را اجرا می کند که شماره سریال را با استفاده از حروف الفبای “A” تا “C” و اعداد 1 تا 3 تولید می کند. در اولین تکرار حلقه بیرونی و بعد از آن. تکمیل تکرار حلقه داخلی، “A1. CodeIgniter، “A2. لاراول، و A3. CakePHP” چاپ می شوند. در تکرار دوم حلقه بیرونی و پس از تکمیل تکرار حلقه داخلی، «B1. اوراکل، B2. MySQL» و «B3. SQL” چاپ می شوند. در تکرار سوم حلقه بیرونی و پس از تکمیل تکرار حلقه داخلی، «C1. CSS، “C2. JQuery» و «C3. جاوا اسکریپت” چاپ می شوند.
برای آلفا که در {A..C}
انجام دادن
#حلقه داخلی
برای عدد که در {1..3}
انجام دادن
#بر اساس خروجی چاپ کنید روی شرایط
اگر [ $alpha == ‘A’ ]; سپس
arrayList=(“CodeIgniter” “لاراول” “کیک پی اچ پی”)
elif [ $alpha == ‘B’ ]; سپس
arrayList=(“اوراکل” “MySQL” “SQL”)
elif [ $alpha == ‘C’ ]; سپس
arrayList=(“CSS” “JQuery” “جاوا اسکریپت”)
فی
اکو “آلفا $$شماره. ${arrayList[$number-1]}“
انجام شده
انجام شده
پس از اجرای اسکریپت خروجی زیر ظاهر می شود:
مثال 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 بار:
مثال 4: تفاوت بین اجراهای متوالی و موازی
یک فایل Bash با اسکریپت زیر ایجاد کنید که تفاوت بین اجرای متوالی و اجرای موازی را نشان می دهد. تابع prn_char() در اسکریپت برای چاپ پنج کاراکتر با مدت زمان 0.5 ثانیه تعریف شده است. در مرحله بعد، اولین حلقه “for” برای اجرای متوالی تابع prn_char() استفاده می شود. دومین حلقه “for” برای اجرای موازی تابع prn_char() استفاده می شود.
prn_char(){
برای ج که در سلام؛ انجام دادن
خواب 0.5;
اکو -n $ c;
انجام شده
اکو
}
# تابع را با استفاده از حلقه for به صورت متوالی اجرا کنید
برای بیرون که در {1..3}; انجام دادن
prn_char “$ بیرون“
انجام شده
# تابع را با استفاده از حلقه for به صورت موازی اجرا کنید
برای بیرون که در {1..3}; انجام دادن
prn_char “$ بیرون“ &
انجام شده
خروجی زیر پس از اجرای اسکریپت ظاهر می شود. تفاوت بین اجرای متوالی و اجرای موازی در خروجی نشان داده شده است. در اینجا، تمام کاراکترهای حلقه “for” تابع prn_char() در یک زمان در اجرای متوالی چاپ می شوند و هر کاراکتر سه بار در اجرای موازی چاپ می شود:
نتیجه
اجرای کارهای موازی با استفاده از حلقه “for” برای بسیاری از اهداف برنامه نویسی مورد نیاز است. روش های اجرای کارهای موازی با استفاده از حلقه “for” در این آموزش نشان داده شده است.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-28 17:57:03