>>> 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__
就是一个节省内存开销的内建方法。