Встречается на собеседованиях • сегодня

Асинхронный код исполняется в одном потоке или нет

Асинхронный код в Python (с использованием asyncio) выполняется в одном потоке, но может эффективно работать с множеством задач благодаря механизму event loop. Event loop переключается между корутинами (async/await), когда они ожидают I/O операций, создавая иллюзию параллелизма.

Однако, асинхронность ≠ многопоточность. GIL всё ещё действует, но так как код не блокирующий (ожидание I/O освобождает поток), это позволяет эффективно использовать один поток.

Пример:

python
import asyncio

async def task(num):
    print(f"Start {num}")
    await asyncio.sleep(1)  # Неблокирующее ожидание
    print(f"End {num}")

async def main():
    await asyncio.gather(task(1), task(2))  # Выполняются "параллельно" в одном потоке

asyncio.run(main())
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы