Python数据结构的内存大小
我想知道如何查看一个Python数据结构的内存大小?我希望能找到类似这样的东西:
sizeof({1:'hello', 2:'world'})
如果能递归地计算每个部分的内存就太好了。不过,即使是一个基本的非递归结果也很有帮助。简单来说,我想了解不同实现选项的内存占用,比如元组、列表和类之间的比较。这很重要,因为我打算实例化数百万个对象。
我现在使用的开发平台是CPython 2.6。
1 个回答
28
看看这个 sys.getsizeof
函数。根据说明,它会返回一个对象占用的字节数,这个字节数是通过对象的 __sizeof__
方法得出的。
正如 Daniel 在评论中提到的,这个函数并不是递归的;它只计算对象本身占用的字节,而不包括它所引用的其他对象的字节。Python 3 的文档中链接了一个递归计算的例子。