Back to questions
Junior — Middle
73
Выполняется ли асинхронный код в одном или нескольких потоках?
Answer from AI
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.