python記憶體模型 Python結構的記憶體大小

2021-10-11 05:13:22 字數 1132 閱讀 9792

這些答案都收集淺層尺寸資訊。我懷疑訪問此問題的訪問者最終將在這裡回答以下問題:「此複雜物件在記憶體中有多大?」

這裡有乙個很好的答案:https :

重點:import sys

def get_size(obj, seen=none):

"""recursively finds size of objects"""

size = sys.getsizeof(obj)

if seen is none:

seen = set()

obj_id = id(obj)

if obj_id in seen:

return 0

# important mark as seen *before* entering recursion to gracefully handle

# self-referential objects

seen.add(obj_id)

if isinstance(obj, dict):

size += sum([get_size(v, seen) for v in obj.values()])

size += sum([get_size(k, seen) for k in obj.keys()])

elif hasattr(obj, '__dict__'):

size += get_size(obj.__dict__, seen)

elif hasattr(obj, '__iter__') and not isinstance(obj, (str, bytes, bytearray)):

size += sum([get_size(i, seen) for i in obj])

return size

像這樣使用:

in [1]: get_size(1)

out[1]: 24

in [2]: get_size([1])

out[2]: 104

in [3]: get_size([[1]])

out[3]: 184

如果您想更深入地了解python的記憶體模型,那麼這裡有一篇很棒的文章,其中包含類似的「總大小」**段,作為較長說明的一部分:https : 您的python記憶體大量使用--cms-25609

python 記憶體模型

python 記憶體模型 1.python變數採用引用語義,每乙個變數名儲存的是實際存放資料的記憶體的位址 01.讀取資料時,x 10,可以認為,通過唯讀指標 位址 訪問資料10所在的記憶體空間,通過變數中存放的位址訪問記憶體只能讀,不能寫 02.寫,需要重新分配一塊記憶體空間,存放新資料,並用新位...

python物件記憶體模型

首先介紹一下python物件的記憶體模型,如下圖1所示 圖1.pyobject物件記憶體模型 上圖可以看到,乙個pyobject必須包含ob refcnt和ob type 這兩個屬性 ob refcnt是這個物件的引用計數,而ob type則是指向 typeobject結構體的指標,它是python...

python高階之記憶體模型

每乙個程式語言的背後都有自己獨特的記憶體模型支援,比如最經典的c語言,乙個int型別佔8位元組。那麼在python中不區分資料型別,定義乙個變數其在內存在占用多少位元組呢?python中資料的運算其記憶體是如何變化的呢?python一切資料皆為物件,python中的物件分成兩類 可變物件和不可變物件...