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脚本把sqlAlchemy对象转换成dict的教程
May 29 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
Nov 20 Python
python实现kmp算法的实例代码
Apr 03 Python
在pandas中遍历DataFrame行的实现方法
Oct 23 Python
Python参数传递对象的引用原理解析
May 22 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
Jun 09 Python
Keras 快速解决OOM超内存的问题
Jun 11 Python
Python实例教程之检索输出月份日历表
Dec 16 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 Python
用Python可视化新冠疫情数据
Jan 18 Python
分享提高 Python 代码的可读性的技巧
Mar 03 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
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
php REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
Linux中为php配置伪静态
2014/12/17 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
vue-loader教程介绍
2017/06/14 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
python批量替换页眉页脚实例代码
2018/01/22 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
python操作gitlab API过程解析
2019/12/27 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
高分子材料个人求职信范文
2013/09/25 职场文书
计算机专业大学生的自我评价
2013/11/14 职场文书
文案策划求职信
2014/04/14 职场文书
快餐公司创业计划书
2014/04/29 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang