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

Почему не стоит в event loop много задач

Добавление слишком большого количества задач в event loop может привести к нескольким проблемам:

  1. Перегрузка памяти – каждая задача потребляет память, и при большом их количестве возможны утечки или OOM-ошибки.
  2. Блокировка event loop – если задачи выполняют CPU-bound операции или блокирующие вызовы, event loop не сможет эффективно переключаться между задачами.
  3. Увеличение latency – задачи будут дольше ждать своей очереди на выполнение, что скажется на отзывчивости приложения.

Пример плохой практики:

python
import asyncio

async def cpu_bound_task():
    # Долгая CPU-bound операция
    sum(i * i for i in range(10**6))

async def main():
    tasks = [cpu_bound_task() for _ in range(10_000)]
    await asyncio.gather(*tasks)  # Перегрузка event loop

asyncio.run(main())

Решение – ограничивать количество одновременных задач, использовать asyncio.Semaphore или выносить CPU-bound задачи в отдельные потоки через loop.run_in_executor().

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

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

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

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