Python实现计算对象的内存大小示例
人气:0本文实例讲述了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中的__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__()方法为对象分配内存及返回对象的引用示例
加载全部内容