Sobes.tech
Back to questions
Junior — Middle
58

Каким образом реализуется асинхронное выполнение задач в механизме Event Loop?

Companies where asked
WildberriesWildberries

Answer from AI

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), что позволяет эффективно выполнять несколько задач асинхронно.