如何在python中测量对象的内存使用情况?

时间:2011-02-16 22:07:38

标签: python memory-management

我有一个python类“foo”,其中包含:

  • 数据(整数,浮点数)
  • 列出(整数,浮点数和其他对象)
  • 字典(整数,浮点数,其他对象)

假设没有反向引用(循环),是否有一种简单的方法来衡量“foo”对象的总内存使用量?

基本上,我正在寻找“sys.getsizeof”的 递归版

我遇到的一些工具包括:heapy,objgraph和gc,但我不认为他们中的任何一个都能完成任务(我可能会对此进行更正)

建议赞赏!

2 个答案:

答案 0 :(得分:18)

尝试Pympler,它将自己描述为“用于衡量,监控和分析Python对象的内存行为的开发工具。”

的内容
>>> import pympler
>>> print pympler.asizeof.asizeof(your_object)

过去对我很有帮助。

您可以search S.O.了解更多信息 - 这是来自Alex Martelli的recommendation

答案 1 :(得分:1)

我不确定你是否想要获得类型或实际复杂对象的大小,但是看看getsizeof,文档指向这个配方以获得强大的递归版本:

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

所以我假设没有“股票”python调用会这样做,否则文档会提到它。