Python数据结构的内存大小

19 投票
1 回答
15072 浏览
提问于 2025-04-16 02:43

我想知道如何查看一个Python数据结构的内存大小?我希望能找到类似这样的东西:

sizeof({1:'hello', 2:'world'})

如果能递归地计算每个部分的内存就太好了。不过,即使是一个基本的非递归结果也很有帮助。简单来说,我想了解不同实现选项的内存占用,比如元组、列表和类之间的比较。这很重要,因为我打算实例化数百万个对象。

我现在使用的开发平台是CPython 2.6。

1 个回答

28

看看这个 sys.getsizeof 函数。根据说明,它会返回一个对象占用的字节数,这个字节数是通过对象的 __sizeof__ 方法得出的。

正如 Daniel 在评论中提到的,这个函数并不是递归的;它只计算对象本身占用的字节,而不包括它所引用的其他对象的字节。Python 3 的文档中链接了一个递归计算的例子

撰写回答