您的位置:首页 > 编程语言 > Python开发

Python的高级特性6:使用__slots__真的能省很多内存

2015-07-20 19:42 661 查看
在伯乐在线上看到了这篇文章,用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__就是一个节省内存开销的内建方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: