Как измерить использование памяти объекта в Python? - PullRequest
8 голосов
/ 17 февраля 2011

У меня есть класс python "foo", который содержит:

  • данные (целые числа, числа с плавающей запятой)
  • списки (целые числа, числа с плавающей запятой и другие объекты)
  • словари (целых, чисел с плавающей точкой, других объектов)

Если нет обратных ссылок (циклов), существует ли простой способ измерить общее использование памяти"foo" объект?

По сути, я ищу рекурсивную версию из "sys.getsizeof"

Несколько инструментов, которые янаткнулся на включенные: heapy, objgraph и gc, но я не думаю, что кто-либо из них подходит для этой задачи (я могу быть исправлен в этом)

Предложения приветствуются!

Ответы [ 2 ]

18 голосов
/ 17 февраля 2011

Попробуйте Pympler , который описывает себя как "Средство разработки для измерения, мониторинга и анализа поведения памяти объектов Python."

Что-то похожееиз

>>> import pympler
>>> print pympler.asizeof.asizeof(your_object)

был полезен для меня в прошлом.

Вы можете искать SO для получения дополнительной информации - вот рекомендация от АлексаМартелли.

1 голос
/ 17 февраля 2011

Я не уверен, пытаетесь ли вы получить размер типа или фактического сложного объекта, но, глядя на getsizeof, документация указывает на этот рецепт для создания надежной рекурсивной версии:

http://code.activestate.com/recipes/577504/

поэтому я бы предположил, что нет никакого «обычного» вызова python, который это сделает, в противном случае в документации это будет упомянуто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...