zoukankan      html  css  js  c++  java
  • 通过`__slots__` 节省RAM

    标签(空格分隔): Python进阶


    python中,由于创建每个实例都会有成员,这些成员都会被保存在dict中,但是Python不能静态分配RAM,当创建实例时,因此dict的大小会比所需要的内存大,特别是当实例数量有成千上万个时,造成RAM的浪费。

    在此背景下,引入__slots__ 帮助节省RAM。
    __slots__是一个在class内部写好的attributes的list。它告诉RAM分配内存时,只分配这些成员所需的空间。如果在实例创建时,如__init__中还有其他成员,那么也不会创建这个成员。

    class MyClass(object):
        __slots__ = ['name', 'identifier']
        def __init__(self, name, identifier):
            self.name = name
            self.identifier = identifier
            self.set_up()
        # ...
    

    如果我们改一下:

    class MyClass(object):
        __slots__ = ['name', 'identifier']
        def __init__(self, name, identifier,pp):
            self.name = name
            self.identifier = identifier
            self.pp = pp
            
    b2 = MyClass('k','s','b')        
    

    则会报错:

    AttributeError: 'MyClass' object has no attribute 'pp'
    
  • 相关阅读:
    IP 协议
    以太网协议
    制作Win10系统安装U盘和安装纯净版Win10
    IP地址的配置
    进制转换
    设置QQ环境变量
    修改IE默认页的指向
    虚拟机安装Linux ubuntu19.10
    【Eclipse】Editor does not contain a main type
    Vmware Workstation虚拟机
  • 原文地址:https://www.cnblogs.com/bradleon/p/6106375.html
Copyright © 2011-2022 走看看