2010-07-21 2 views
1

У меня есть модуль, который поддерживает создание географических объектов с использованием стандартного интерфейса компании. После создания этих объектов вызывается метод update_db(), и все объекты обновляются в базе данных.Python cached list

Важно, чтобы все объекты были вставлены в один сеанс, чтобы сохранить счетчики и статистику перед обновлением производственной базы данных.

Проблема в том, что иногда слишком много объектов, и память заполняется.

Есть ли способ создать кешированный список в 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

Именно то, что мне нужно. Если бы я мог, дал бы больше оборотов. –