Назад к вопросам
Wildberries
Junior — Middle
59
Каким образом реализуется асинхронное выполнение задач в механизме Event Loop?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Python асинхронное выполнение задач реализуется с помощью механизма Event Loop, который управляет циклом обработки событий и задач. Event Loop постоянно проверяет очередь событий и запускает задачи, которые готовы к выполнению, не блокируя основной поток.
Основные компоненты:
- Коррутины — функции, которые могут приостанавливать своё выполнение (с помощью
await), позволяя другим задачам выполняться. - Фьючи (Future) — объекты, представляющие результат асинхронной операции, который будет доступен позже.
- Задачи (Tasks) — обёртки над коррутинами, которые планируются и выполняются Event Loop.
Пример с использованием asyncio:
import asyncio
async def say_after(delay, what):
await asyncio.sleep(delay)
print(what)
async def main():
task1 = asyncio.create_task(say_after(1, 'Hello'))
task2 = asyncio.create_task(say_after(2, 'World'))
print('Started tasks')
await task1
await task2
asyncio.run(main())
Здесь Event Loop управляет выполнением корутин, переключаясь между ними во время ожидания (await asyncio.sleep), что позволяет эффективно выполнять несколько задач асинхронно.