专栏首页大猪的笔记python 获取真正对象的大小 get_size

python 获取真正对象的大小 get_size

import sys


def get_size(obj, seen=None):
    # From
    # 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 Test(object):
    __slots__ = ['id']

    def __init__(self):
        self.id = ""


t = Test()
print(get_size(t))

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • torndb使用

    恩,还是失败,参考这篇文章: http://www.linuxfly.org/windows_install_mysql_python_library/

    超级大猪
  • 小知识:从官方镜像安装owncloud

    cd /var/www/html/apps && git clone https://github.com/nextcloud/passman.git

    超级大猪
  • 笔记:NEC QTP 第五个实例-ClassCol

        strSentence = strSentence & "set obj = New " & className '创建对象   

    超级大猪
  • Django进阶-8-ORM多对多

    Django ORM 中一个类名对应一张表,要想操作表就 models.类 直接操作那张表。如果使用 ManyToManyField 字段生成“第三张”关系表,...

    小团子
  • 罗马数字转整数

    例如, 罗马数字 2 写做 II ,即为两个并列的 I。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II ...

    _kyle
  • textarea 在光标处插入文字

    deepcc
  • es6 Object的几个新方法

    ES5 的 Object.preventExtensions 则可以阻止给对象添加新属性

    吴裕超
  • jQuery.data() 的实现方式

    jQuery.data() 的实现方式     jQuery.data() 的作用是为普通对象或 DOM Element 附加(及获取)数据。      ...

    用户1220053
  • 从理论到实践,一文详解 AI 推荐系统的三大算法

    介绍 背景 随着互联网行业的井喷式发展,获取信息的方式越来越多,人们从主动获取信息逐渐变成了被动接受信息,信息量也在以几何倍数式爆发增长。举一个例子,PC时...

    AI研习社
  • 推荐系统之用户行为分析

    基于用户行为的推荐,在学术界名为协同过滤算法。 协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使 自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而...

    zhuanxu

扫码关注云+社区

领取腾讯云代金券