得到python对象的真实大小

sys.getsizeof只给你这个对象和他的属性的大小,并没有递归的寻找sub-attributes。
sys.getsizeof得到的大小总感觉奇怪…
下面是一个能到真实大小的脚本:


import sysdef 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 objectsseen.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

例:

class People(object):def __init__(self, name, age, dender):self.name = nameself.age = ageself.gender = genderp1 = People('Li Li', 30, 'Female')
p2 = People('Wang Wang', 25, 'Male')>>>sys.getsizeof(p1)
>>>56
>>>sys.getsizeof(p2)
>>>56
>>>get_size(p1)
>>>465
>>>get_size(p2)
>>>467

相关介绍:

  1. https://goshippo.com/blog/measure-real-size-any-python-object/
  2. https://github.com/bosswissam/pysize/blob/master/pysize.py

转载于:https://www.cnblogs.com/helloeboy/p/10028914.html

得到python对象的真实大小相关推荐

  1. python字典的长度怎么计算_关于如何知道python对象的字节大小,如数组和字典?:如何知道python对象的字节大小,如数组和字典? – 简单的方法...

    我正在寻找一种简单的方法来了解数组和字典对象的字节大小,比如 [ [1,2,3], [4,5,6] ] or { 1:{2:2} } 很多主题都说使用pylab,例如: from pylab impo ...

  2. python获取对象的大小_Python实现计算对象的内存大小示例

    本文实例讲述了Python实现计算对象的内存大小.分享给大家供大家参考,具体如下: 一般的sys.getsizeof()显示不了复杂的字典. 查看类中的内容: def dump(obj): for a ...

  3. python对象内存模型

    原文:Python的垃圾回收机制(二)之内存模型 1. Python对象内存模型 首先介绍一下Python对象的内存模型,如下图1所示: 图1. PyObject对象内存模型 上图可以看到,一个PyO ...

  4. python numpy 数据类型为python对象-python numPy模块 与numpy里的数据类型、数据类型对象dtype...

    学习链接:http://www.runoob.com/numpy/numpy-tutorial.html 简介: numPy是python语言的一个扩展库,是一个运行非常快的数学库,主要用于数组计算. ...

  5. 独家|测量、建议、快速上手!你所使用的Python对象占用了多少内存?(附代码)...

    作者:Gigi Sayfan 翻译:吴振东 校对:吴金笛 本文约3300字,建议阅读10分钟. 本文将介绍多种Python对象分别所占用的内存,并解释所选择的测量方法和函数,为节省内存提供建议. Py ...

  6. Python学习笔记《Python核心编程》第4章Python对象

    所有的python对象都拥有三个特性:身份,类型和值 身份:每个对象都有一个唯一的身份标识自己,可以使用内建函数id()来得到,这个值被认为是该对象的内存地址:--只读 类型:对象的类型决定了该对象可 ...

  7. python 学习笔记day03-python基础、python对象、数字、函数

    python基础 语句和语法 注释及续行 首要说明的是:尽管python可读性最好的语言之一,这并不意味者程序员在代码中就可以不写注释 和很多UNIX脚本类似,python注释语句从#字符开始 注释可 ...

  8. python对象底层原理_Python字符串对象实现原理详解

    在Python世界中将对象分为两种:一种是定长对象,比如整数,整数对象定义的时候就能确定它所占用的内存空间大小,另一种是变长对象,在对象定义时并不知道是多少,比如:str,list, set, dic ...

  9. python对象分类

    1 python对象分类 所有的Python对象都拥有三个特性:身份,类型和值 身份: 每一个对象都有一个唯一的身份标识自己.任何对象的身份可以使用内建函数id()来得到.这个值可以被认为是该对象的内 ...

最新文章

  1. python编程培训多少钱-想要学习Python,武汉Python编程培训费用是多少?
  2. boost::mpl模块实现list_c相关的测试程序
  3. SQL Lite on NHibernate
  4. php判断数组下标,php判断json或者数组格式与给定格式是否一致
  5. 纪中B组模拟赛总结(2019.12.21)
  6. JavaFX动画工具
  7. [渝粤教育] 武汉大学 数字图像处理 参考 资料
  8. java 不支持fork,grails不能运行fork模式解决方法
  9. TVM:使用 Schedule 模板和 AutoTVM 来优化算子
  10. Spring4.x(15)---SpringEL-三目运算
  11. php中创建函数的正确方法,如何在PHP中创建一个函数
  12. ScaleAnimation缩放动画Demo
  13. 记录平台调用支付中心接口
  14. 一个月薪 12000 的北京程序员的真实生活 !
  15. XMLHttpRequest对象的readyState与status
  16. DSP TMS320F2803x 增强型捕获模块(eCAP)
  17. STM32CubeIDE的一点使用技巧
  18. Android电子牌外接USB读卡器读取内容模拟键盘事件
  19. RLC振荡原理与RC Snubber吸收电路
  20. 2022年牛客多校第三场补题记录

热门文章

  1. LeetCode——Word Break
  2. python trie
  3. Mybatis框架_part1
  4. Python-多线程编程
  5. C#文件流传输[类似于QQ][引]
  6. 祝贺Terrylee博客园Post达到100篇
  7. Flutter图像绘制原理深入分析
  8. java获取C盘下的隐藏目录文件名称
  9. 事物注解方式: @Transactional
  10. jquery ajax返回html乱码解决