2012-08-17 4 views
2

저는 기본적으로 계층 구조에있는 5 가지 유형의 객체를 만드는 파이썬 프로그램에서 작업 해 왔습니다. 예를 들어 내 프로그램은 모든 객체가 비디오 입력을 기반으로 상호 작용하는 8000 개의 셀 객체 (각 열에 4 개의 셀)를 포함하는 2000 개의 Column 객체를 포함하는 1 개의 Region 객체를 만들 수 있습니다.파이썬 객체 저장 및 다시로드

는 지금, 나는 비디오 입력이 일정 기간 동안 자신의 상태를 각각 변경 후 상태 모든 개체를 저장할 수 있어야합니다. 그래서 제 질문은 어떻게하면 파이썬에서 수천 개의 객체를 효율적으로 저장하고 다시로드 할 수 있습니까? 미리 감사드립니다!

+0

, 또는 빨리? –

답변

1

큰 규모입니다하지만 난 당신이 찾고있는 무엇을 생각하는지 효율적인 피클 확실하지 object serialization입니다. 하지만이 객체의 정보를 '새로 고침'하거나 저장하고로드하려고합니까? 또한 관계/연관을 위해 각 객체와 연관된 영숫자 ID를 만들어야하기 때문에 'Persistence of External Objects'섹션을 읽으십시오.

한 완전히 해키 방법은 또한 객체를 JSON-쓸어하고를 저장하기 위해 수 있습니다. 각 개체를 연결하려면 여전히 영숫자 ID 또는 일종의 사용 가능한 식별자가 필요합니다.

+0

@ IgnacioVazquez-Abrams가 다른 SO 스레드에서 언급 한 'shelve'도 있습니다 : http://stackoverflow.com/a/12000115/1431750 – aneroid

0

나는 당신이 ZODB으로 볼 필요가 있다고 생각합니다.

ZODB는 pickle을 사용하여 데이터를 직렬화하고 객체의 계층 구조를 처리하는 데 매우 적합하며 객체가 포함 된 persistent.Persistent 기본 클래스를 사용하는 객체 데이터베이스로 커밋 할 때 변경된 객체 만 감지하고 저장합니다 ; 예 : 모든 작은 변화마다 전체 계층 구조를 작성할 필요가 없습니다. ZODB 프로젝트에 포함

는 ZODB 인식하고 효율적인 한 곳에서 수천 개의 개체를 저장 할 수 있습니다 BTrees라는 패키지입니다. Region 오브젝트에 대해 이것을 사용하여 C 럼을 저장하십시오. BTrees를 사용하여 수백만 개의 데이터 포인트를 저장할 수 있습니다.