如何找出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