Python实现计算对象的内存大小示例实现计算对象的内存大小示例
本文实例讲述了Python实现计算对象的内存大小。分享给大家供大家参考,具体如下:
一般的sys.getsizeof()显示不了复杂的字典。
查看类中的内容:
def dump(obj):
for attr in dir(obj):#dir显示类的所有方法
print(" obj.%s = %r" % (attr, getattr(obj, attr)))
这里用递归调用所有对象的getsizeof:
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相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》、《Python数据结构与算法教
程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与
目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
您可能感兴趣的文章您可能感兴趣的文章:详解Python中的__new__()方法的使用python中的__init__ 、__new__、__call__小结详解Python中的
__init__和__new__详解Python中的__new__、__init__、__call__三个特殊方法实例解析Python中的__new__特殊方法
Python中__new__与__init__方法的区别详解深入理解Python中的 __new__ 和 __init__及区别介绍Python中的__new__与
__init__魔术方法理解笔记浅谈Python 对象内存占用python使用内存zipfile对象在内存中打包文件示例跟老齐学Python之深入
变量和引用对象Python使用__new__()方法为对象分配内存及返回对象的引用示例
评论0