Sobes.tech
Назад к вопросам
Junior — Middle
74

Выполняется ли асинхронный код в одном или нескольких потоках?

Ответ от нейросети

sobes.tech AI

Асинхронный код в Python обычно выполняется в одном потоке, используя цикл событий (event loop). Он не создает новые потоки для каждой задачи, а переключается между задачами, когда одна из них ожидает ввода-вывода или другого события. Это позволяет эффективно использовать один поток для множества операций ввода-вывода без блокировок.

Если же нужно выполнять код параллельно на нескольких ядрах, используют многопоточность (threading) или многопроцессность (multiprocessing), но это уже не чистый async/await.

Пример с asyncio:

import asyncio

async def task(name, delay):
    print(f"Task {name} started")
    await asyncio.sleep(delay)
    print(f"Task {name} finished")

async def main():
    await asyncio.gather(
        task('A', 2),
        task('B', 1),
    )

asyncio.run(main())

Здесь обе задачи выполняются в одном потоке, переключаясь при ожидании asyncio.sleep.