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

 

posted @ 2015-07-20 19:42  李雷雷alexkn  阅读(2456)  评论(0编辑  收藏  举报