2012-12-27 1 views
2

내 프로그램은 데이터를 저장하기 위해 거대한 개체가 필요한 시뮬레이션을 실행합니다. 블롭의 크기는 2-3GB보다 큽니다. MBP에 충분한 메모리가 있어야하지만, Python (Mac OS X의 Python 2.7.3, 포트에서)은이 모든 것을 사용하는 것처럼 보이지 않으며 시스템은 완전히 정지됩니다. 피클를 덤프하기 전에 메모리의 개체를 복제 할 것처럼 거대한 배열을 파이썬에서 처리하기

내가 피클을 사용하지만, 그것은 또한 너무 큰 개체에 대해 작동하지 않습니다, 시뮬레이션의 상태를 저장하려면, 그것은 ... 보인다

질문 : 거대한 파이썬 데이터 구조 (dict, set, list)를 항상 메모리에 저장하지 않고 처리 할 수있는 표준 라이브러리가 있습니까? 파이썬이 가상 메모리에서 실행되도록 강제하는 방법이 있습니까? (나는 멍청이에 익숙하지 않은데,이 상황에서 나를 도울까요?)

미리 감사드립니다!

+1

64 비트 파이썬을 사용하고 계십니까? –

+0

개체에 모든 데이터를 저장하지 않고 대신 디스크에 파일로 저장하고 조각별로 읽고 단계별로 처리하려고 했습니까? –

+0

그것이 도움이되지 않는다는 것을 알고 있지만 어제 밤 튜플 6G의 목록을 가지고 어제 밤에 파이썬이 아무런 문제도 처리하지 못했습니다. MacOS 10.8. 그래서 집회 파이썬의 문제는 아닙니다. 내 컴퓨터는 총 RAM이 20G입니다. – favoretti

답변

2

파이썬의 64 비트 버전을 사용하고 있고 pickle 또는 다른 기본 제공 모듈의 문제가 계속 발생하면 대신 객체 지향 데이터베이스에 파이썬 객체를 저장할 수 있습니다. 우리는 매일 여기에 대형 물체 (~ 10GB)를 사용하고 있으며 ZODB을 사용하고 있습니다. 가장 빠른 것은 아니지만 일을 끝내게됩니다.

나는 또한 dobbin이 좋은 대안이라고 생각합니다.

+0

고마워, 나는이 ZODB를 시도 할 것이다. 이 질문을 게시하기 전에 나의 마지막 희망은 cPickle 이었지만 표준 파이썬 구현과 같은 문제가있는 것 같습니다. – Mkoch

+0

ZODB가 내 문제를 해결 한 것으로 보입니다.하지만 계산이 성공적으로 끝날 때까지는 내일 만 행복하게 될 것입니다. :) – Mkoch