【问题标题】:python object save and reloadpython对象保存和重新加载
【发布时间】:2012-08-17 05:39:14
【问题描述】:

我一直在研究一个 python 程序,它基本上创建了 5 种不同类型的对象,这些对象处于层次结构中。例如,我的程序可能会创建 1 个 Region 对象,其中包含 2000 个 Column 对象,其中包含 8000 个 Cell 对象(每列中有 4 个 Cell),其中所有对象都基于视频输入相互交互。

现在,我希望能够在视频输入在一段时间内更改其每个状态后保存所有对象状态。所以我的问题是如何有效地保存和重新加载 Python 中的数千个对象?提前致谢!

【问题讨论】:

  • 高效还是快速?

标签: python save


【解决方案1】:

不确定泡菜对于大规模生产的效率如何,但我认为您正在寻找的是object serialization。但是您是在尝试“刷新”这些对象中的信息还是保存并加载它们?另请阅读“Persistence of External Objects”部分,因为您需要为关系/关联创建与每个对象关联的字母数字 ID。

一种完全 hacky 的方法也可以是对对象进行 json 化并存储。您仍然需要字母数字 id 或某种可用的标识符来关联每个对象。

【讨论】:

【解决方案2】:

您看过 Shelve、Pickle 还是 cPickle? http://docs.python.org/release/2.5/lib/persistence.html

【讨论】:

    【解决方案3】:

    我认为您需要查看ZODB

    ZODB 是一个对象数据库,它使用 pickle 来序列化数据,非常擅长处理对象的层次结构,如果您的对象使用包含的 persistent.Persistent 基类,将检测并仅保存在您更改时更改的对象犯罪;例如没有必要在每一个微小的变化上写出整个层次结构。

    ZODB 项目中包含一个名为BTrees 的包,它支持 ZODB 并可以高效地将数千个对象存储在一个地方。将这些用于您的区域对象来存储列。我们有时使用 BTree 来存储数百万个数据点。

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 2018-08-17
      • 2021-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多