如何测量Python中对象的内存使用?
我有一个叫做 foo
的 Python 类,里面包含了:
- 数据(整数和浮点数)
- 列表(包含整数、浮点数和其他对象的列表)
- 字典(包含整数、浮点数和其他对象的字典)
假设没有循环引用(也就是没有对象相互指向),有没有简单的方法来测量一个 foo
对象的总内存使用量呢?
其实,我想要的是一个 递归版本 的 sys.getsizeof
。
我遇到的一些工具包括:heapy、objgraph 和 gc,但我觉得它们可能无法完成这个任务(我可能会被纠正)。
2 个回答
0
我不太确定你是想获取类型的大小,还是想获取实际复杂对象的大小。不过,看一下getsizeof的文档,它指向了一个比较稳健的递归版本的做法:
http://code.activestate.com/recipes/577504/
所以我猜应该没有现成的Python调用可以做到这一点,不然文档里会提到的。
23
可以试试 Pympler,它自我介绍为 "一个用于测量、监控和分析Python对象内存使用情况的开发工具."
类似下面这样的内容
>>> import pympler
>>> print pympler.asizeof.asizeof(your_object)
以前对我很有帮助。
可以查看 官方文档中的示例,以及在 Stack Overflow上的其他问题。