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

Как затрачивается память в асинхронности

В асинхронном Python (asyncio) память используется более эффективно по сравнению с потоками, так как корутины легковесны и работают в одном потоке. Однако есть нюансы:

  1. Корутины занимают меньше памяти, чем потоки (обычно ~1KB против ~8MB на поток)
  2. Event Loop хранит все задачи в памяти, что может стать проблемой при большом количестве задач
  3. Ожидающие задачи не освобождают память, пока не завершатся

Пример с утечкой памяти:

python
async def leaky_task():
    data = [0] * 10_000_000  # Большой объект в памяти
    await asyncio.sleep(3600)

async def main():
    tasks = [asyncio.create_task(leaky_task()) for _ in range(1000)]
    await asyncio.gather(*tasks)

Для оптимизации:

  • Используйте asyncio.create_task() осознанно
  • Ограничивайте количество одновременных задач
  • Освобождайте ресурсы явно через try/finally или async with
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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