>>> from env_helper import info; info()
页面更新时间: 2024-04-04 21:01:13
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-18-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

13.6. 使用__slots__真的能省很多内存

在伯乐在线上看到了这篇文章,用Python的 __slots__节省9G内存,于是想测试下,对单个类,用__slots__节省内存效果会不会明显。

看完这个例子后,我们也会明白__slots__是用来干嘛的。

>>> import sys
>>> class test(object):
>>>     def __init__(self,name):
>>>         self.name = name
>>>
>>>
>>> class test2(object):
>>>     __slots__ = ["name"]
>>>     def __init__(self,name):
>>>         self.name = name
>>>
>>> a = test('alex')
>>> b = test2('lilei')
>>> print(sys.getsizeof(a))
56
>>> print(sys.getsizeof(b))
40
>>> 56-48
8
>>> 8.0/56
0.14285714285714285

上述代码可以看到,python为对象a分配了56 Byte的内存,而为对象b分配了48 Byte的内存,总共节省了8 Byte,也就是节省了14.3%的内存空间。

综上:__slots__就是一个节省内存开销的内建方法。