با استفاده از asyncio یک برنامه پایتون بنویسید که دادههای شبیهسازیشده از پنج حسگر با تأخیرهای متفاوت را بهصورت همزمان بخواند، نتایج را جمعآوری کند و مجموع یا میانگین آنها را چاپ نماید در حالی که برای هر حسگر حد زمانی (timeout) مشخصی در نظر گرفته شده است.
3.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:13 0.0
برای حل این مسئله از ماژول asyncio استفاده کنید: هر حسگر را با یک coroutine مانند simulate_sensor(id, delay) شبیهسازی کنید که با await asyncio.sleep(delay) تأخیر را تقلید میکند و سپس مقدار را برمیگرداند. برای اجرای همزمان از asyncio.create_task یا asyncio.gather استفاده کنید و برای اعمال timeout از asyncio.wait_for یا مدیریت asyncio.TimeoutError بهره بگیرید؛ از time.monotonic برای اندازهگیری زمان کل استفاده کنید و از time.sleep در کدهای async اجتناب کنید. این تمرین مبانی همزمانی را با ابزارهای پایتون نمایش میدهد و مفاهیمی مانند پاسخدهی در سیستمهای بلادرنگ و جمعآوری موازی دادهها در محیطهای HPC را پوشش میدهد؛ نکات مهم: کار با return_exceptions در gather، هندلینگ استثناها و استفاده از Python 3.7+.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای اجرای همزمان حسگرها از asyncio.create_task یا asyncio.gather استفاده کنید و هر حسگر را با coroutine simulate_sensor(id, delay) شبیهسازی کنید. برای اعمال timeout، از asyncio.wait_for استفاده کنید و در صورت بروز asyncio.TimeoutError وظیفه مربوطه را لغو کنید تا منابع هدر نرود و داده ناقص پذیرفته نشود. برای اندازهگیری زمان کل از time.monotonic استفاده کنید و پس پایان یا timeout، مجموع یا میانگین دادههای موفق را چاپ کنید. در جمعآوری خروجی، با return_exceptions=True به gather نگاه کنید تا استثناها را مانند مقادیر نتیجه بگیرید و مدیریت استثناها را سادهتر کنید.
گزارش