کلاس Pool در ماژول multiprocessing در پایتون، یک واسط برنامهنویسی است که برای ایجاد یک گروه از پردازشها (worker processes) برای اجرای توابع موازی استفاده میشود. این کلاس به طور خاص برای مواقعی مفید است که نیاز است یک تعداد زیادی از فرآیندها (پردازشها) را بر روی دادههای مختلف اجرا کنیم و نتایج را جمعآوری کنیم. در زیر، یک مثال ساده از استفاده از Pool را بررسی میکنیم
مثال – محاسبه مربع اعداد
در این مثال، از Pool برای محاسبه مربع اعداد استفاده میکنیم. ابتدا یک Pool ایجاد میکنیم و سپس با استفاده از map، تابع محاسبه مربع را بر روی یک لیست اعداد اجرا میکنیم.
from multiprocessing import Pool
def square(x):
return x * x
if __name__ == "__main__":
numbers = [1, 2, 3, 4, 5]
# ایجاد یک Pool با 3 پردازش کننده
with Pool(processes=3) as pool:
results = pool.map(square, numbers)
print(results)توضیح کد بالا:
- خط ۳ تا ۴: یک تابع است که مربع یک عدد را حساب میکند.
- خط ۱۰ تا ۱۱: در این خط مربع اعداد در ۳ پردازش به صورت موازی محاسبه میشوند.
- خط ۱۰: عدد ۳ مشخص میکند که ۳ پردازش به صورت موازی ساخته شود. دستور
withبه ما کمک میکند که پس از اتمام کارهای مورد نیاز، Pool را به طور خودکار ببندیم و منابع مصرفی آن را آزاد کنیم. این کار باعث بهینهسازی استفاده از منابع سیستم میشود و از بروز مشکلاتی مانند نشتی منابع جلوگیری میکند. - خط ۱۱: در این خط، متغیر
resultsبه عنوان خروجی نهایی، حاوی نتایج محاسبه مربع اعداد موجود در لیستnumbersاست که به صورت همزمان و موازی توسط پردازشهایی که توسطPoolساخته شدهاند، محاسبه شدهاند.
- خط ۱۰: عدد ۳ مشخص میکند که ۳ پردازش به صورت موازی ساخته شود. دستور