Выбор ответа Senior Память и производительность обновлено
Как найти утечку памяти
Вопрос
Память воркера растёт на 50 МБ в час. Какой инструмент стандартной библиотеки покажет, в каких строках кода выделяется память?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: tracemalloc: снимки и их сравнение. tracemalloc.start(), затем два takesnapshot() с интервалом и compareto показывают строки кода, где выросло потребление. cProfile и timeit измеряют время, а не память. gc.collect() только запускает сборку и не объясняет, где утечка; если…
Варианты ответа
cProfile: он считает и время, и аллокацииtimeitс замером памяти до и послеtracemalloc: снимки и их сравнениеправильный ответgc.collect()иgc.get_objects()
Разбор
tracemalloc.start(), затем два take_snapshot() с интервалом и compare_to показывают строки кода, где выросло потребление. cProfile и timeit измеряют время, а не память. gc.collect() только запускает сборку и не объясняет, где утечка; если после него память не падает, объекты ещё достижимы.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Память и производительность»
- Встроенные функции против ручного цикла
- Пересечение больших списков id
- Числа Фибоначчи без экспоненты
- Скользящая медиана потока на двух кучах
- Найти пару с суммой быстрее O(n²)
- Циклические ссылки и gc
- Управление памятью в CPython
- Инструменты профилирования Python