2010-08-12 115 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