2

私は、基本的に階層内にある5つの異なるタイプのオブジェクトを作成するpythonプログラムに取り組んできました。たとえば、私のプログラムは、すべてのオブジェクトがビデオ入力に基づいて相互に対話している 8000 のセル オブジェクト (各列に 4 つのセル) を含む 2000 の列オブジェクトを含む 1 つの領域オブジェクトを作成する場合があります。

ここで、ビデオ入力が一定期間にわたって各オブジェクトの状態を変更した後、すべてのオブジェクトの状態を保存できるようにしたいと考えています。私の質問は、Python で何千ものオブジェクトを効率的に保存して再読み込みするにはどうすればよいですか? 前もって感謝します!

4

3 に答える 3

1

Shelve、Pickle、または cPickle を見たことがありますか? http://docs.python.org/release/2.5/lib/persistence.html

于 2012-08-17T07:05:50.450 に答える
1

pickle が大規模でどれほど効率的かはわかりませんが、探しているのはobject serializationだと思います。しかし、これらのオブジェクトの情報を「更新」しようとしていますか、それとも保存してロードしようとしていますか? 関係/関連付けのために、各オブジェクトに関連付けられた英数字の ID を作成する必要があるため、「外部オブジェクトの永続性」のセクションもお読みください。

オブジェクトをjson化して保存することも、完全にハックな方法の1つです。各オブジェクトを関連付けるには、英数字の ID または何らかの使用可能な識別子が必要です。

于 2012-08-17T05:56:01.617 に答える
0

ZODBを調べる必要があると思います。

ZODB は、pickle を使用してデータをシリアル化するオブジェクト データベースであり、オブジェクトの階層の処理に非常に優れています。オブジェクトが含まれてpersistent.Persistentいる基本クラスを使用している場合、コミット時に変更されたオブジェクトのみを検出して保存します。たとえば、小さな変更ごとに階層全体を書き出す必要はありません。

ZODB プロジェクトには、BTreesZODB 対応の というパッケージが含まれており、何千ものオブジェクトを 1 か所に効率的に格納できます。これらを Region オブジェクトに使用して、列を格納します。BTree を使用して、何百万ものデータポイントを保存しています。

于 2012-08-17T06:37:17.300 に答える