Выбор ответа Senior Память и производительность обновлено

Как найти утечку памяти

Вопрос

Память воркера растёт на 50 МБ в час. Какой инструмент стандартной библиотеки покажет, в каких строках кода выделяется память?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: tracemalloc: снимки и их сравнение. tracemalloc.start(), затем два takesnapshot() с интервалом и compareto показывают строки кода, где выросло потребление. cProfile и timeit измеряют время, а не память. gc.collect() только запускает сборку и не объясняет, где утечка; если…

Варианты ответа

  1. cProfile: он считает и время, и аллокации
  2. timeit с замером памяти до и после
  3. tracemalloc: снимки и их сравнениеправильный ответ
  4. gc.collect() и gc.get_objects()

Разбор

tracemalloc.start(), затем два take_snapshot() с интервалом и compare_to показывают строки кода, где выросло потребление. cProfile и timeit измеряют время, а не память. gc.collect() только запускает сборку и не объясняет, где утечка; если после него память не падает, объекты ещё достижимы.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.