博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
得到python对象的真实大小
阅读量:4653 次
发布时间:2019-06-09

本文共 1197 字,大约阅读时间需要 3 分钟。

得到python对象的真实大小

sys.getsizeof只给你这个对象和他的属性的大小,并没有递归的寻找sub-attributes。

sys.getsizeof得到的大小总感觉奇怪…
下面是一个能到真实大小的脚本:

import sysdef get_size(obj, seen=None):    """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

例:

class People(object):    def __init__(self, name, age, dender):        self.name = name        self.age = age        self.gender = gender        p1 = People('Li Li', 30, 'Female')p2 = People('Wang Wang', 25, 'Male')>>>sys.getsizeof(p1)>>>56>>>sys.getsizeof(p2)>>>56>>>get_size(p1)>>>465>>>get_size(p2)>>>467

相关介绍:

转载于:https://www.cnblogs.com/helloeboy/p/10028914.html

你可能感兴趣的文章
Noip2013货车运输
查看>>
vmware安装minimal centos报错/etc/rc5.d/s99local : line:25 : eject : command not found
查看>>
邮件模板定义
查看>>
odoo server命令行以及配置文件
查看>>
16 On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima 1609.04836v1
查看>>
docker 删除应用服务
查看>>
【解读】山香科技:互联网从软件革命到移动革命
查看>>
Delphi通过Map文件查找内存地址出错代码所在行
查看>>
driver, module以及怎么看他们
查看>>
初学JAVA简记——随机数的产生
查看>>
Majority Element in an Array
查看>>
MFC设置窗体背景
查看>>
分布式事务
查看>>
H3C 聚合链路负载分担原理
查看>>
H3C NAT Server配置举例
查看>>
linux /proc 接口和共享中断
查看>>
iOS 生命周期 -init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear 区别和用途...
查看>>
Web存储使用详解(本地存储、会话存储)
查看>>
JS库
查看>>
android 内存泄漏出现的情况
查看>>