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

Какие у тебя есть вопросы по корутинам

Корутины в Python (через asyncio) — мощный инструмент для асинхронного программирования, но с нюансами:

  1. Глобальное состояние event loop
    Запуск корутин требует asyncio.run() или явного управления loop. Пример:

    python
    async def main():
        print("Hello")
    asyncio.run(main())  # Без этого — RuntimeError
  2. Блокирующий код
    Обычные функции (time.sleep(), синхронные IO) блокируют event loop. Нужно заменять на await asyncio.sleep().

  1. Отмена задач (Task.cancel())
    Корутины могут быть отменены, но обработка CancelledError обязательна:

    python
    try:
        await some_task
    except asyncio.CancelledError:
        print("Task cancelled")
  2. Ограничения с многопоточностью
    asyncio не совместим с классическими потоками без loop.run_in_executor().

  3. Цепочки await
    Если забыть await в корутине, она не выполнится (тихий баг).

  4. Отладка
    Трейсы сложнее из-за чередования корутин. Помогает asyncio.debug = True.

  5. Живые блокировки
    Неправильное использование asyncio.Future или бесконечные циклы без await могут "заморозить" приложение.

  6. Совместимость с синхронным кодом
    Вызов asyncio из синхронного кода требует осторожности (например, через asyncio.run_coroutine_threadsafe()).

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

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

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

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