یک برنامهٔ پایتون بنویسید که با استفاده از ماژول concurrent.futures چند وظیفهٔ شبیهسازیشده (مثلاً پردازش یا خواندن/نوشتن کوچک) را بهصورت همزمان اجرا کند و زمان کل اجرا و میانگین تأخیر هر وظیفه را گزارش دهد.
4.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:17 0.0
برای حل این مسئله از concurrent.futures (ThreadPoolExecutor یا ProcessPoolExecutor) و time.perf_counter برای اندازهگیری زمان استفاده کنید؛ هر وظیفه را با یک تابع شبیهسازیکننده که یا time.sleep یا یک محاسبهٔ ساده انجام میدهد پیادهسازی کنید، سپس با ارسال وظایف به executor و جمعآوری نتایج با as_completed زمان شروع/پایان هر وظیفه را ثبت کرده و مجموع و میانگین تأخیر را محاسبه کنید. نکتهها: برای I/O-bound از ThreadPoolExecutor و برای CPU-bound از ProcessPoolExecutor استفاده کنید، به محدودیت GIL توجه داشته باشید، و این برنامه صرفاً برای بررسی همزمانی و اندازهگیری تأخیر مناسب است نه برای تضمین رفتار سختِ زمانبندیشده در سیستمهای بلادرنگ یا بارهای HPC واقعی.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی درست از time.perf_counter بهره ببرید و با استفاده از as_completed زمان شروع و پایان هر وظیفه را ثبت کنید تا کل زمان و میانگین تأخیر محاسبه شود. اگر کار شما I/O-bound است ThreadPoolExecutor مناسب است و برای CPU-bound از ProcessPoolExecutor استفاده کنید تا محدودیت GIL لحاظ شود. حداکثر تعداد_workers را با توجه به منابع سیستم تنظیم کنید تا تعادل بین سربار مدیریت وظیفه و بهرهوری حفظ شود. یادداشت کنید که شبیهسازی با time.sleep یا محاسبات ساده میتواند تفاوتهای کوچکی ایجاد کند، پس هدف اندازهگیری همزمانی است نه زمانبندی سختگیرانه.
گزارش