python 内存优化1(给类添加__slots__属性)

Posted 苍耳冬阳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 内存优化1(给类添加__slots__属性)相关的知识,希望对你有一定的参考价值。

创建大量的对象

对于主要当成简单的数据结构类而言,通过添加__slots__属性来极大的减少实例所占用的内存
eg:

class Date:
    __slots__ = [\'year\', \'month\', \'day\']
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

原理: 定义__slots__后,python会使用一种更加紧凑的内部表示
实例通过一个很小的固定大小的数组来构建,而不是为每个实例定义
一个字典,这跟元组或列表很类似。在__slots__中列出得属性名在
内部被映射到这个数组的指定小标上。
缺点

不能再给实例添加新的属性,只能使用__slots中定义的属性名。
定义了slots后,类不在支持一些普通类特性, 比如多继承。

以上是关于python 内存优化1(给类添加__slots__属性)的主要内容,如果未能解决你的问题,请参考以下文章

动态语言__slots__

使用__slots__

Python:__slots__()方法和@property方法

面对对象之特殊变量__slot__ | Python

__slots__ 的使用?

使用__slots__节省python内存技巧