یک برنامه پایتون بنویسید که با استفاده از asyncio پنج وظیفه با زمانهای اجرای متفاوت را بهطور همزمان اجرا کند و پس از اتمام هر وظیفه نام آن و زمان واقعی اتمام (به ثانیه از شروع برنامه) را چاپ کند.
4.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 03:01 0.0
برای حل این مسئله از کتابخانه asyncio استفاده کنید؛ یک تابع async برای شبیهسازی کارها بسازید که با asyncio.sleep زمان اجرای متفاوت را تقلید کند، سپس با asyncio.create_task چند تسک بسازید و با asyncio.gather یا await روی همه آنها منتظر بمانید تا به پایان برسند. برای ثبت زمانها میتوانید از asyncio.get_event_loop().time() یا time.time() استفاده کنید؛ نکته مهم این است که تسکها را قبل از await کردن ایجاد کنید تا همزمان شروع به اجرا کنند و از asyncio.run برای راهاندازی حلقه رویداد استفاده نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته کلیدی این روش این است که تسکها را قبل از هر await ایجاد کنید تا همزمان شروع شوند و با asyncio.gather یا asyncio.as_completed منتظر پایان همه باشند. برای ثبت زمان پایان دقیق، میتوانید از loop.time() یا time.time() استفاده کنید و از زمان مبدا شروع برنامه محاسبه کنید تا زمان واقعی پایان هر تسک را چاپ کنید. همچنین در Python 3.10+ بهتر است از asyncio.get_running_loop() در داخل coroutines استفاده کنید تا با حلقه رویداد فعلی کار کنید و از asyncio.run برای راهاندازی استفاده کنید. اگر میخواهید پایان هر تسک را بهطور جداگانه نشان دهید، از asyncio.as_completed بهره ببرید تا هر بار که یک تسک تمام میشود خروجی را چاپ کنید.
گزارش