這些答案都收集淺層尺寸資訊。我懷疑訪問此問題的訪問者最終將在這裡回答以下問題:「此複雜物件在記憶體中有多大?」
這裡有乙個很好的答案: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中的物件分成兩類 可變物件和不可變物件...