在伯樂在線上看到了這篇文章,用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__就是一個節省內存開銷的內建方法。