Python 缓存列表
我有一个模块,可以用公司标准的接口来创建地理对象。创建完这些对象后,会调用 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
时,列表里的元素会被“打包”(pickled)并存储到 directory
里的一个文件中。get_item()
、set_item()
和 del_item()
方法会处理存储在内存中的数据,或者从磁盘“交换”数据以便访问。
- 这个设计好吗?有没有什么标准的替代方案?
- 我该如何在对列表的部分数据进行“打包”后强制进行垃圾回收?
谢谢,
亚当
2 个回答
2
我觉得你的第一个问题已经回答了。关于第二个问题,强制进行垃圾回收的话,可以使用 gc.collect。你可以在这里查看详细信息:http://docs.python.org/library/gc.html。
5
使用 shelve
。你的键就是你列表中的索引。