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