python对象保存并重新加载

时间:2012-08-17 05:39:15

标签: python save

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

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

3 个答案:

答案 0 :(得分:1)

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

一种完全hacky的方式也可能是json-ify对象并存储它。您仍然需要使用字母数字ID或某种可用的标识符来关联每个对象。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我认为您需要查看ZODB

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

ZODB项目中包含一个名为BTrees的程序包,它可以识别ZODB,并且可以在一个地方存储数千个对象。将这些用于Region对象以存储列。我们使用BTrees来存储数百万个数据点。