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的几种开发工具介绍
Mar 07 Python
python学习之第三方包安装方法(两种方法)
Jul 30 Python
Python 含参构造函数实例详解
May 25 Python
简单谈谈Python的pycurl模块
Apr 07 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 Python
pandas通过索引进行排序的示例
Nov 16 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
Feb 28 Python
Python3使用Selenium获取session和token方法详解
Feb 16 Python
用python自动生成日历
Apr 24 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 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
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
php实现快速排序法函数代码
2012/08/27 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
JavaScript 学习笔记(九)call和apply方法
2010/01/11 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
vue debug 二种方法
2018/09/16 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
python发布模块的步骤分享
2014/02/21 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
五水共治一句话承诺
2014/05/30 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
Python sklearn分类决策树方法详解
2022/09/23 Python