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

Как asyncio позволяет допускать код с блокирующими командами CPU

Asyncio работает на основе кооперативной многозадачности, где корутины добровольно отдают управление через await. Однако, если внутри корутины есть синхронный CPU-bound код (например, сложные вычисления), он блокирует event loop, так как не отдает управление.

Проблема:

python
async def bad_example():
    # Блокирует event loop
    result = sum(i*i for i in range(10**7))

Решение:

  1. Вынос в отдельный поток/процесс через loop.run_in_executor():
python
async def good_example():
    loop = asyncio.get_event_loop()
    result = await loop.run_in_executor(None, lambda: sum(i*i for i in range(10**7)))
  1. Использование специализированных асинхронных библиотек (например, aiohttp вместо requests)

Ключевое правило: asyncio подходит для I/O-bound задач, а CPU-bound операции нужно выносить в executor или использовать multiprocessing.

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

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

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

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