得到python对象的真实大小
得到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
相关介绍:
- https://goshippo.com/blog/measure-real-size-any-python-object/
- https://github.com/bosswissam/pysize/blob/master/pysize.py
转载于:https://www.cnblogs.com/helloeboy/p/10028914.html
得到python对象的真实大小相关推荐
- python字典的长度怎么计算_关于如何知道python对象的字节大小,如数组和字典?:如何知道python对象的字节大小,如数组和字典? – 简单的方法...
我正在寻找一种简单的方法来了解数组和字典对象的字节大小,比如 [ [1,2,3], [4,5,6] ] or { 1:{2:2} } 很多主题都说使用pylab,例如: from pylab impo ...
- python获取对象的大小_Python实现计算对象的内存大小示例
本文实例讲述了Python实现计算对象的内存大小.分享给大家供大家参考,具体如下: 一般的sys.getsizeof()显示不了复杂的字典. 查看类中的内容: def dump(obj): for a ...
- python对象内存模型
原文:Python的垃圾回收机制(二)之内存模型 1. Python对象内存模型 首先介绍一下Python对象的内存模型,如下图1所示: 图1. PyObject对象内存模型 上图可以看到,一个PyO ...
- python numpy 数据类型为python对象-python numPy模块 与numpy里的数据类型、数据类型对象dtype...
学习链接:http://www.runoob.com/numpy/numpy-tutorial.html 简介: numPy是python语言的一个扩展库,是一个运行非常快的数学库,主要用于数组计算. ...
- 独家|测量、建议、快速上手!你所使用的Python对象占用了多少内存?(附代码)...
作者:Gigi Sayfan 翻译:吴振东 校对:吴金笛 本文约3300字,建议阅读10分钟. 本文将介绍多种Python对象分别所占用的内存,并解释所选择的测量方法和函数,为节省内存提供建议. Py ...
- Python学习笔记《Python核心编程》第4章Python对象
所有的python对象都拥有三个特性:身份,类型和值 身份:每个对象都有一个唯一的身份标识自己,可以使用内建函数id()来得到,这个值被认为是该对象的内存地址:--只读 类型:对象的类型决定了该对象可 ...
- python 学习笔记day03-python基础、python对象、数字、函数
python基础 语句和语法 注释及续行 首要说明的是:尽管python可读性最好的语言之一,这并不意味者程序员在代码中就可以不写注释 和很多UNIX脚本类似,python注释语句从#字符开始 注释可 ...
- python对象底层原理_Python字符串对象实现原理详解
在Python世界中将对象分为两种:一种是定长对象,比如整数,整数对象定义的时候就能确定它所占用的内存空间大小,另一种是变长对象,在对象定义时并不知道是多少,比如:str,list, set, dic ...
- python对象分类
1 python对象分类 所有的Python对象都拥有三个特性:身份,类型和值 身份: 每一个对象都有一个唯一的身份标识自己.任何对象的身份可以使用内建函数id()来得到.这个值可以被认为是该对象的内 ...
最新文章
- python编程培训多少钱-想要学习Python,武汉Python编程培训费用是多少?
- boost::mpl模块实现list_c相关的测试程序
- SQL Lite on NHibernate
- php判断数组下标,php判断json或者数组格式与给定格式是否一致
- 纪中B组模拟赛总结(2019.12.21)
- JavaFX动画工具
- [渝粤教育] 武汉大学 数字图像处理 参考 资料
- java 不支持fork,grails不能运行fork模式解决方法
- TVM:使用 Schedule 模板和 AutoTVM 来优化算子
- Spring4.x(15)---SpringEL-三目运算
- php中创建函数的正确方法,如何在PHP中创建一个函数
- ScaleAnimation缩放动画Demo
- 记录平台调用支付中心接口
- 一个月薪 12000 的北京程序员的真实生活 !
- XMLHttpRequest对象的readyState与status
- DSP TMS320F2803x 增强型捕获模块(eCAP)
- STM32CubeIDE的一点使用技巧
- Android电子牌外接USB读卡器读取内容模拟键盘事件
- RLC振荡原理与RC Snubber吸收电路
- 2022年牛客多校第三场补题记录