Python的高级特性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')
:--

In [36]: print(sys.getsizeof(a))
64

In [37]: print(sys.getsizeof(b))
56

In [38]: 64-56
Out[38]: 8

In [40]: 8.0/64
Out[40]: 0.125

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

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM