2017-10-28 100 views
0

我不是在尋找一個恆定的記錄最大值可用int代表;我正在尋找一個int可以佔用的最大內存量。請看下面的代碼:我們如何獲得python int佔用的字節數?

import sys 

def print_and_execute(*args): 
    for s in args: 
     print(s, end = " == ") 
     r = eval(s) 
     print(r) 
    return 

print_and_execute("type(5) ")  
print_and_execute("sys.getsizeof(5)")  
i = int()  
print_and_execute("i")  
print_and_execute("sys.getsizeof(i)")  
i = 2937  
print_and_execute("i")  
print_and_execute("sys.getsizeof(i)") 
print_and_execute("sys.maxsize") 
print_and_execute("sys.getsizeof(sys.maxsize)") 

對於我特定的機器,輸出結果是:

type(5) == <class 'int'> 
sys.getsizeof(5) == 28 
i == 0 
sys.getsizeof(i) == 24 
i == 2937 
sys.getsizeof(i) == 28 
sys.maxsize == 9223372036854775807 
sys.getsizeof(sys.maxsize) == 36 

顯然,一些int s爲24個字節長,其他都是28,還有一些人用36多少字節需要持有任何尺寸的int

+0

Python整數可以擴展到必要的大小。換句話說,上限取決於有多少內存可用。 –

+0

「一些整數是24個字節長」 - 除0之外哪一個? –

回答

2

需要多少個字節來保存任何大小int

儘可能多的要求。 int s的大小沒有限制,它們具有their documentation狀態的任意大小。 *

sys.maxsize並不代表最大尺寸爲int的對象。它是用於(在CPython中)保存索引值的Py_ssize_t的最大值。

例如,只需要創建一個更大的intmaxsize

>>> sys.getsizeof(sys.maxsize * sys.maxsize) 
44 

所以,您可以通過它使用getsizeof獲得給定int的字節數。

*綁定,最終,由可用內存。

相關問題