Python实现计算对象的内存大小示例


Posted in Python onJuly 10, 2019

本文实例讲述了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读写文件操作示例程序
Dec 02 Python
在Python的框架中为MySQL实现restful接口的教程
Apr 08 Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
Python中的日期时间处理详解
Nov 17 Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
python实现键盘控制鼠标移动
Nov 27 Python
对python中的argv和argc使用详解
Dec 15 Python
set在python里的含义和用法
Jun 24 Python
在python3中实现查找数组中最接近与某值的元素操作
Feb 29 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 Python
Python画图高斯分布的示例
Jul 10 #Python
使用Python实现跳一跳自动跳跃功能
Jul 10 #Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
Jul 10 #Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 #Python
Python 占位符的使用方法详解
Jul 10 #Python
Python寻找路径和查找文件路径的示例
Jul 10 #Python
python获取当前文件路径以及父文件路径的方法
Jul 10 #Python
You might like
VFP与其他应用程序的集成
2006/10/09 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
php实现分页显示
2015/11/03 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
python学习基础之循环import及import过程
2018/04/22 Python
Flask-Mail用法实例分析
2018/07/21 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
Python json转字典字符方法实例解析
2020/04/13 Python
python列表的逆序遍历实现
2020/04/20 Python
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
鱼油专家:Omegavia
2016/10/10 全球购物
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
文员自我评价怎么写
2013/09/19 职场文书
2014年迎新年活动方案
2014/02/19 职场文书
民事授权委托书范文
2014/08/02 职场文书
审计班子对照检查材料
2014/08/27 职场文书
运动会100米广播稿
2015/08/19 职场文书
安全生产培训心得体会
2016/01/18 职场文书
妇产科护理心得体会
2016/01/22 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis