یک برنامه پایتون بنویسید که با استفاده از 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 برای راه‌اندازی حلقه رویداد استفاده نمایید.

توسط پژوهشگر در 202 روز قبل ساعت 03:01
دسته بندی ها: Python Python for beginner
nima در 202 روز قبل ساعت 07:44

نکته کلیدی این روش این است که تسک‌ها را قبل از هر await ایجاد کنید تا هم‌زمان شروع شوند و با asyncio.gather یا asyncio.as_completed منتظر پایان همه باشند. برای ثبت زمان پایان دقیق، می‌توانید از loop.time() یا time.time() استفاده کنید و از زمان مبدا شروع برنامه محاسبه کنید تا زمان واقعی پایان هر تسک را چاپ کنید. همچنین در Python 3.10+ بهتر است از asyncio.get_running_loop() در داخل coroutines استفاده کنید تا با حلقه رویداد فعلی کار کنید و از asyncio.run برای راه‌اندازی استفاده کنید. اگر می‌خواهید پایان هر تسک را به‌طور جداگانه نشان دهید، از asyncio.as_completed بهره ببرید تا هر بار که یک تسک تمام می‌شود خروجی را چاپ کنید.

گزارش

1 پاسخ

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

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