2012-08-17 95 views
2

我一直在研究一個基本上創建5個不同類型的對象在層次結構中的python程序。例如,我的程序可能會創建1個包含2000個包含8000個Cell對象(每個列中有4個單元)的Column對象的Region對象,其中所有對象都基於視頻輸入相互交互。python對象保存並重新加載

現在,我希望能夠在視頻輸入在一段時間內改變其每個狀態後保存所有對象狀態。所以我的問題是如何有效地保存和重新加載Python中的數千個對象?提前致謝!

+0

高效或快速? – 2012-08-17 05:53:10

回答

1

不知道如何有效的大規模泡菜,但我認爲你要找的是object serialization。但是,您是否試圖「刷新」這些對象中的信息或保存並加載它們?另請閱讀'Persistence of External Objects'一節,因爲您需要爲關係/關聯創建與每個對象關聯的字母數字標識。

一個完全不好的方法也可能是json-ify對象並存儲它。您仍然需要字母數字ID或某種可用的標識符來關聯每個對象。

+0

在另一個SO線程中還有'IgnacioVazquez-Abrams提到的'shelve':http://stackoverflow.com/a/12000115/1431750 – aneroid 2012-08-17 06:01:20

0

我想你需要看看ZODB

ZODB是一個對象數據庫,它使用pickle來序列化數據,非常善於處理對象的層次結構,並且如果對象使用包含的基類,將檢測並僅保存提交時發生更改的對象;例如沒有必要在每一個小的變化上寫下整個層次結構。

包含在ZODB項目中的是一個名爲BTrees的包,它支持ZODB,可以將數千個對象存儲在一個地方。將這些用於Region對象以存儲列。我們使用BTrees來存儲數百萬個數據點。