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性能优化的20条建议
Oct 25 Python
python端口扫描系统实现方法
Nov 19 Python
python 排序算法总结及实例详解
Sep 28 Python
Python实现两款计算器功能示例
Dec 19 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
python进行文件对比的方法
Dec 24 Python
Python3模拟登录操作实例分析
Mar 12 Python
Python实现微信消息防撤回功能的实例代码
Apr 29 Python
解决yum对python依赖版本问题
Jul 05 Python
django2.2 和 PyMySQL版本兼容问题
Feb 17 Python
基于python模拟bfs和dfs代码实例
Nov 19 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 15 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
JS变量及其作用域
2017/03/29 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
Python随机生成彩票号码的方法
2015/03/05 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
Pygame的程序开始示例代码
2020/05/07 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
Python对excel的基本操作方法
2021/02/18 Python
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
三年级科学教学反思
2014/01/29 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python