یک برنامه پایتون بنویسید که با استفاده از concurrent.futures به‌صورت concurrent وظایف محاسباتی (مثلاً محاسبه عدد فیبوناچی یا مربع اعداد) را اجرا کند، زمان اجرای موازی را با اجرای متوالی مقایسه کند و خروجی هر وظیفه را چاپ کند.

10.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:15

0.0

برای حل این مسئله از ماژول concurrent.futures استفاده کنید و با ThreadPoolExecutor یا ProcessPoolExecutor وظایف را ارسال کنید، سپس با time.perf_counter زمان اجرای موازی و متوالی را بسنجید و نتایج هر Future را با as_completed یا result دریافت و چاپ کنید. برای کارهای CPU-bound از ProcessPoolExecutor (به دلیل GIL) و برای I/O-bound از ThreadPoolExecutor استفاده کنید؛ از بلوک with برای مدیریت اتوماتیک executor و از future.exception() برای گرفتن خطاها بهره ببرید.

توسط پژوهشگر در 221 روز قبل ساعت 01:15
دسته بندی ها: Python Python for beginner
reyhaneh در 221 روز قبل ساعت 13:59

برای کارهای CPU-bound از ProcessPoolExecutor استفاده کنید تا محدودیت GIL تأثیر نگذارد. اگر کار شما IO-bound است، ThreadPoolExecutor مناسب است و اجرای موازی را می‌توانید با زمان‌سنجی با time.perf_counter مقایسه کنید. با استفاده از with برای مدیریت executor به‌طور خودکار منابع آزاد می‌شود و با as_completed یا result خروجی هر Future را دریافت و با future.exception() خطاها را بررسی کنید. همچنین به اندازه وظایف توجه کنید؛ ایجاد وظایف خیلی کوچک ممکن است سربار را افزایش دهد و کارایی را کاهش دهد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری