如何测量Python中对象的内存使用?

14 投票
2 回答
6671 浏览
提问于 2025-04-16 11:58

我有一个叫做 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上的其他问题

撰写回答