【问题标题】:Python cached listPython缓存列表
【发布时间】: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() 将处理存储在内存中的数据,或者从磁盘“交换”它以访问它。

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

谢谢,

亚当

【问题讨论】:

    标签: python list caching data-structures


    【解决方案1】:

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

    【讨论】:

    • 正是我所需要的。如果可以的话,我会给予更多的支持。
    【解决方案2】:

    我认为您的第一个问题已经得到解答。第二,强制 GC:使用 gc.collect。 http://docs.python.org/library/gc.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多