本文实例讲述了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