2010-08-12 95 views
14

如何找出Python数据结构的内存大小?我正在寻找类似的东西:Python数据结构的内存大小

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

如果递归地计算每一件事情,这是很好的。但即使是基本的非递归结果也有帮助。基本上我想要了解各种实现选项,如元组v.s.列表v.s.在内存占用方面。这很重要,因为我打算让数百万个对象实例化。

我目前的开发平台是CPython 2.6。

+0

这将是一个非常慢的程序,除非你有很多内存。再加上查找表的大小将会非常巨大(数百万个对象?)。只是说' – 2010-08-12 20:06:38

+1

[namedtuple](http://docs.python.org/dev/library/collections.html#namedtuple-factory-function-for-tuples-with-named-fields)是一个很好的选择,使用类作为每个实例所需的空间与元组相同。如果你有很多一个类的实例,你应该看看['__slots__'](http://docs.python.org/reference/datamodel.html#slots) – 2010-08-12 20:51:23

回答

20

看看sys.getsizeof函数。根据文档,它返回对象的大小,以字节为单位,如对象的__sizeof__方法所示。

由于Daniel在评论中指出,它不是递归的;它只计算对象本身占用的字节数,而不是其它指向的对象。 This recipe for a recursive computation由Python 3文档链接。

+0

谢谢。这适用于我! – 2010-08-13 03:35:57