Найти - Пользователи
Полная версия: Профайлинг памяти
Начало » Python для новичков » Профайлинг памяти
1
alexander4
Подскажите как можно посмотреть какие конкретно объекты выжирают много памяти?
Нашёл profiler memory, но им можно детально посмотреть только сколько жрет памяти функция, а мне нужно глобально по всей программе (не из 1 модуля). Максимум, что нашёл это guppy, который показывает сколько памяти съедает тот или иной тип, а нужно найти конкретный объект, который забыли почистить.
JOHN_16
Вообще тема обширная, достаточно глянуть на SO
Я вот сходу подумал как то так:

 import ctypes
import gc
from sys import get_size_of
def get_obj_by_id(_id):
     return ctypes.cast(_id, ctypes.py_object).value
res = sorted( ( (get_size_of(x), id(x)) for x in gc.get_objects()), key = lambda x: x[0], reverse = True)
Зная id объекта можно получить сам объект. Но как я понимаю Вам бы хотелось увидеть имя переменной соответствующей этому объекту, а вот с этим возникнут сложности. В качестве обходных путей можно пройтись по locals() и globals() и сравнивать id объектов…
alexander4
Спасибо за быстрый ответ. Буду пробовать)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB