當建立大量例項如何節省記憶體

2021-09-26 18:36:26 字數 728 閱讀 3642

當程式需要建立大量的例項時,那麼程式就會占用大量的記憶體,我們想要節省記憶體的話該怎麼做呢?

在類中使用__slots__屬性

class

date

: __slots__ =

['year'

,'month'

,'day'

] def __init__

(self, year, month, day)

: self.year = year

self.month = month

self.day = day

1.當定義了__slots__屬性時,python 就會針對例項採用一種更加緊湊的內部表示。不再讓每個例項都建立乙個__dict__字典,現在的例項是圍繞著乙個固定長度的小型陣列來構建的,這和乙個元組或者列表很相似。

2.在64位版本的python中,不使用__slots__儲存乙個單獨的date例項需要428個位元組的記憶體;如果定義了,記憶體用量將下降到156位元組。在乙個需要同時處理大量date例項的程式中,這將顯著減少總的記憶體使用量。

3.儘管這看起來是乙個非常有用的特性,但是在大部分**中都應該盡量別使用它。因為python中有許多部分都依賴於傳統的基於字典的實現。

4.誤解:可以阻止使用者為例項新增新的屬性。儘管這的確是使用__slots__所帶來的***,但這絕對不是__slots__的原本用意。相反。人們一直以來都把它當作一種優化工具。

python如何為建立大量例項節省記憶體

python如何為建立大量例項節省記憶體,具體內容如下 案例 某網路遊戲中,定義了玩家類player id,name,status,每有乙個 玩家,在伺服器程式內有乙個player的例項,當 人數很多時,將產生大量例項 百萬級別 需求 如何降低這些大量例項的記憶體開銷?如何做?首先要明白,pytho...

00804 建立大量物件時節省記憶體方法

程式要建立大量 可能上百萬 的物件,導致占用很大的記憶體。重新 slots 屬性 usr bin env python class date 當定義了 slots 屬性時,ython就會針對例項採用一種更加緊湊的內部表示,不在讓每個例項都建立乙個 dict 字典。例項通過乙個很小的固定大小的陣列來建...

python 百萬級別類例項實現節省記憶體

案例 某網路遊戲中,定義了玩家類player id,name,status 每當有乙個玩家,就會在伺服器建立乙個player例項 如何降低這些例項的大量例項的記憶體開銷?解決方案 定義類的 slots 屬性,它是用來宣告例項屬性名字的列表 class player object slots name...