2011-05-24 66 views
6

我已經分配了讀取.txt文件的任務,該文件是各種事件的日誌,並將其中一些事件寫入字典。Python擱置模塊內存消耗

問題是該文件有時可能會大於3GB的大小。這意味着字典變得太大而不適合主內存。看來Shelve是解決這個問題的好方法。但是,由於我將不斷修改字典,因此我必須啓用writeback選項。這是我關心的地方 - 教程說這會減慢讀寫過程並使用更多內存,但我無法找到有關速度和內存如何受到影響的統計信息。

任何人都可以澄清多少讀/寫速度和內存受到影響,以便我可以決定是否使用寫回選項或犧牲一些代碼效率的可讀性?

謝謝

+1

這取決於你正在使用的詞典做什麼:如果你只需要通過替換值('貨架[「關鍵」] = newvalue'),你不修改它需要回寫。如果你在修改可變類型('shelf''key']。append(x)',你需要寫回。當然,你可以保持回寫,並且始終記住修改和替換你的書架上的值,如果你 – 2011-05-24 18:42:23

+0

我只需要添加鍵值對,但是因爲我正在使用嵌套字典,所以我會將k,v對添加到內部字典中。 – inspectorG4dget 2011-05-24 19:18:45

+0

您可以編寫它,以便始終獲取值從貨架上,在任何級別添加,然後將其放回貨架上? – 2011-05-24 19:25:55

回答

1

對於這種規模的數據庫,擱置真的是錯誤的工具。如果您不需要高可用客戶機/服務器架構,你只是想你的TXT文件轉換爲本地內存訪問的數據庫中,你真的應該使用ZODB

如果你需要的東西highly-可用,您當然需要切換到正式的「NoSQL」數據庫,其中有許多可供選擇。

下面是如何將擱置數據庫轉換爲ZODB數據庫的簡單示例,該數據庫將解決您的內存使用/性能問題。

​​