【发布时间】:2010-07-21 16:54:40
【问题描述】:
我有一个支持使用公司标准界面创建地理对象的模块。这些对象创建完成后,调用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)
初始化时会创建一个普通列表。当列表的大小超过max_memory_size 时,列表元素将被腌制并存储在directory 的文件中。 get_item()、set_item() 和 del_item() 将处理存储在内存中的数据,或者从磁盘“交换”它以访问它。
- 这是一个好的设计吗?有没有标准的替代品?
- 如何在
pickle-ing 列表的一部分之后强制进行垃圾回收?
谢谢,
亚当
【问题讨论】:
标签: python list caching data-structures