Python 缓存列表

Ada*_*tan 3 python caching list data-structures

我有一个模块,支持使用公司标准接口创建地理对象。创建这些对象后,update_db()调用该方法,并将所有对象更新到数据库中。

将所有对象插入一个会话中非常重要,以便在更新生产数据库之前保留计数器和统计信息。

问题是有时对象太多,内存就会满。

有没有办法在 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)
Run Code Online (Sandbox Code Playgroud)

初始化时将创建一个普通列表。当列表的大小超过 时max_memory_size,列表元素将被腌制并存储在 中的文件中directoryget_item()set_item()并将del_item() 处理存储在内存中的数据,或从磁盘“交换”数据以访问它。

  1. 这是一个好的设计吗?有没有标准的替代品?
  2. 如何在pickle列表的一部分之后强制进行垃圾回收?

谢谢,

亚当

S.L*_*ott 5

使用shelve。您的键是列表的索引。