У меня есть модуль, который поддерживает создание географических объектов с использованием стандартного интерфейса компании. После создания этих объектов вызывается метод 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()
будут обрабатывать данные, хранящиеся в памяти, или «обменивать» их с диска для доступа к нему.
- Это хороший дизайн? Существуют ли стандартные альтернативы?
- Как я могу заставить сборку мусора после
pickle
-в части списка?
Спасибо,
Адам
Именно то, что мне нужно. Если бы я мог, дал бы больше оборотов. –