2010-07-21 40 views
1

我有一個模塊支持使用公司標準接口創建地理對象。創建這些對象後,將調用update_db()方法,並將所有對象更新到數據庫中。Python緩存列表

爲了在更新生產數據庫之前保留計數器和統計信息,必須在一個會話中插入所有對象。

問題是,有時只有太多的對象,並且內存變滿。

有沒有辦法在Python中創建一個緩存列表,以處理不適合內存的列表?

我的總體思路是:

class CachedList(object): 
    def __init__(self, max_memory_size, directory) 
    def get_item(index) 
    def set_item(index) 
    def del_item(index) 
    def append(item) 

一個普通的名單將在初始化時被創建。當列表大小超過max_memory_size時,列表元素被酸洗並存儲在directory的文件中。 get_item(),set_item()del_item()將處理存儲在內存中的數據,或者從磁盤「交換」它來訪問它。

  1. 這是一個很好的設計?有沒有任何標準的選擇?
  2. 如何強制垃圾回收pickle-列表中的某些部分?

感謝,

亞當

回答

3

使用shelve。您的密鑰是您的列表的索引。

+0

準確地說,確切地說,絕對是我需要的。如果可以的話,會給予更多的讚揚。 – 2010-07-21 17:15:17