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使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 Python
基于Python的身份证号码自动生成程序
Aug 15 Python
Python的批量远程管理和部署工具Fabric用法实例
Jan 23 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
提升python处理速度原理及方法实例
Dec 25 Python
TensorFlow——Checkpoint为模型添加检查点的实例
Jan 21 Python
python通过matplotlib生成复合饼图
Feb 06 Python
Python 数据结构之十大经典排序算法一文通关
Oct 16 Python
Python 数据可视化神器Pyecharts绘制图像练习
Feb 28 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+APACHE实现用户论证的方法
2006/10/09 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
php curl 上传文件代码实例
2015/04/27 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
js实现右键菜单功能
2016/11/28 Javascript
layui分页效果实现代码
2017/05/19 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Python实现多属性排序的方法
2018/12/05 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
python交互模式基础知识点学习
2020/06/18 Python
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
C有"按引用传递"吗
2016/09/06 面试题
优秀生推荐信范文
2013/11/28 职场文书
商场促销活动总结
2014/07/10 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
Python中npy和mat文件的保存与读取
2022/04/24 Python