2017-05-12 45 views
0

我想用sys.getsizeof()比較Python中數據類型的大小。但是,對於整數和浮點數,它返回相同的值 - 24(不是習慣的4或8字節)。另外,返回72(不是96),用array.array()用4個整數元素聲明的數組大小。並帶有4個浮動元件88(不是96)。到底是怎麼回事?Python-從sys.getsizeof()的int,float等的大小

import array, sys 
arr1 = array.array('d', [1,2,3,4]) 
arr2 = array.array('i', [1,2,3,4]) 
print sys.getsizeof(arr1[1]), sys.getsizeof(arr2[1]) # 24, 24 
print sys.getsizeof(arr1), sys.getsizeof(arr2) # 88, 72 
+0

見http://stackoverflow.com/questions/449560/how-do-i-determine-the-size-of-an-對象中的Python –

回答

0

sys.getsizeof()返回空間Python對象取量的函數。 不是您需要在底層系統的內存中表示該對象中的數據所需的空間量。

Python對象具有開銷以涵蓋引用計數(用於垃圾收集)和其他實現相關的東西。另外,array不是floats或ints的幼稚序列;數據結構在數據類型,元素數量等方面都有相當數量的內容。例如,這就是'd''i'居住的地方。

爲了讓我覺得你期望的答案,嘗試

print (arr1.itemsize * len(arr1)) 
print (arr2.itemsize * len(arr2))