با استفاده از multiprocessing.Array در پایتون یک برنامه بنویسید که یک آرایهٔ مشترک از اعداد صحیح ایجاد کند، آن را بین چند فرایند تقسیم کند تا هر فرایند بخش خود را با مربع اندیسها پر کند و در پایان مجموع عناصر آرایه را محاسبه و چاپ کند.
6.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:22 0.0
برای حل این مسأله از ماژول multiprocessing در پایتون استفاده کنید: یک multiprocessing.Array با typecode مناسب (مثلاً 'i' برای عدد صحیح) بسازید، چند multiprocessing.Process ایجاد کرده و به هر فرایند محدودهٔ ایندکس مخصوصی را پاس دهید تا مقادیر را در آرایهٔ مشترک بنویسد. فراموش نکنید که پس از start فراخوانی join کنید تا فرایندها کامل شوند و سپس مجموع را در فرآیند اصلی محاسبه و چاپ کنید. در کاربردهای Real-Time و HPC توجه به همزمانی و کمترین سربار همگامسازی ضروری است — اگر بخشها روی هم نمینویسند نیازی به قفل نیست، در غیر این صورت از lock مربوط به multiprocessing.Array یا multiprocessing.Lock استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که اگر چند فرایند به صورت همزمان به بخشهای مشترک آرایه مینویسند، از lock مربوط به multiprocessing.Array استفاده کنید تا Race conditions نباشد. در غیر این صورت، اگر بخشها به طور مستقل مینویسند و احتمال برخورد وجود ندارد، میتوانید lock را غیرفعال کنید تا سربار کاهش یابد. همچنین در ویندوز حتماً از guard: if __name__ == '__main__': استفاده کنید تا از بازتولید فرایندها جلوگیری شود. پس از join کردن همهٔ فرایندها، مجموع تمامی عناصر آرایه را با sum(array) محاسبه و چاپ کنید.
گزارش