本文實例講述了Python實現計算對象的內存大小。分享給大家供大家參考,具體如下:
一般的sys.getsizeof()顯示不了復雜的字典。
查看類中的內容:
1
2
3
|
def dump(obj): for attr in dir (obj): #dir顯示類的所有方法 print ( " obj.%s = %r" % (attr, getattr (obj, attr))) |
這里用遞歸調用所有對象的getsizeof:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
def get_size(obj, seen = None ): # From https://goshippo.com/blog/measure-real-size-any-python-object/ # 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 |
希望本文所述對大家Python程序設計有所幫助。
原文鏈接:https://www.cnblogs.com/blackprience/p/10692391.html