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

Сколько потоков занимает работа разных корутин в asyncio

В asyncio все корутины выполняются в одном потоке (основном потоке event loop). Корутины — это не потоки, а сопрограммы, которые кооперативно переключаются в рамках одного потока.

Event loop управляет выполнением корутин, переключаясь между ними при возникновении await.

Пример:

python
import asyncio

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

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

asyncio.run(main())  # Работает в одном потоке

Исключения:

  • Если используется run_in_executor, то код выполняется в отдельном потоке/процессе.
  • Некоторые низкоуровневые операции (например, файловый ввод-вывод в Windows) могут блокировать поток.

Вывод: asyncio по умолчанию использует один поток, но при необходимости можно задействовать дополнительные.

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

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

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

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