在伯乐在线上看到了这篇文章,用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__就是一个节省内存开销的内建方法。