如何找出Python数据结构的内存大小?我正在寻找类似的东西:Python数据结构的内存大小
sizeof({1:'hello', 2:'world'})
如果递归地计算每一件事情,这是很好的。但即使是基本的非递归结果也有帮助。基本上我想要了解各种实现选项,如元组v.s.列表v.s.在内存占用方面。这很重要,因为我打算让数百万个对象实例化。
我目前的开发平台是CPython 2.6。
如何找出Python数据结构的内存大小?我正在寻找类似的东西:Python数据结构的内存大小
sizeof({1:'hello', 2:'world'})
如果递归地计算每一件事情,这是很好的。但即使是基本的非递归结果也有帮助。基本上我想要了解各种实现选项,如元组v.s.列表v.s.在内存占用方面。这很重要,因为我打算让数百万个对象实例化。
我目前的开发平台是CPython 2.6。
看看sys.getsizeof
函数。根据文档,它返回对象的大小,以字节为单位,如对象的__sizeof__
方法所示。
由于Daniel在评论中指出,它不是递归的;它只计算对象本身占用的字节数,而不是其它指向的对象。 This recipe for a recursive computation由Python 3文档链接。
谢谢。这适用于我! – 2010-08-13 03:35:57
这将是一个非常慢的程序,除非你有很多内存。再加上查找表的大小将会非常巨大(数百万个对象?)。只是说' – 2010-08-12 20:06:38
[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