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中的random()方法的使用介绍
May 15 Python
在Python的列表中利用remove()方法删除元素的教程
May 21 Python
python enumerate函数的使用方法总结
Nov 15 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
python设置环境变量的原因和方法
Jun 24 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
Python日志logging模块功能与用法详解
Apr 09 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
Pycharm安装python库的方法
Nov 24 Python
python实现KNN近邻算法
Dec 30 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 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
德生PL550的电路分析
2021/03/02 无线电
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
从0开始学Vue
2016/10/27 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
ant design实现圈选功能
2019/12/17 Javascript
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
python 将md5转为16字节的方法
2018/05/29 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
python写一个随机点名软件的实例
2019/11/28 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
中国跨境电商:Tomtop
2017/03/16 全球购物
借名购房协议书范本
2014/10/06 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
发票退票证明
2015/06/24 职场文书
环保建议书作文500字
2015/09/14 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏
go goth封装第三方认证库示例详解
2022/08/14 Golang