다중 처리: 프로세스 간에 큰 읽기 전용 개체를 공유합니까?

| | | | | | | | | | | | | | | | | | | | | | | | |

다중 처리를 통해 생성된 하위 프로세스가 프로그램에서 이전에 생성된 객체를 공유합니까?

다음 설정이 있습니다.

do_some_processing(filename): for line in file(filename): if line.split(",")[0] in big_lookup_object: # if __name__ == "__main__": big_lookup_object = marshal.load("file.bin") pool = Pool(processes=4) print pool.map(do_some_processing, glob.glob("*.data")) 

저는 큰 개체를 메모리에 로드한 다음 해당 큰 개체를 사용해야 하는 작업자 풀을 만듭니다. 큰 개체는 읽기 전용으로 액세스하므로 다음 작업을 수행할 필요가 없습니다. 프로세스 간에 수정 사항을 전달합니다.

내 질문은: Unix/c에서 프로세스를 생성하거나 각 프로세스가 자체 복사본을 로드하는 것처럼 공유 메모리에 로드되는 큰 개체입니다 큰 물건?

업데이트: 더 명확히 하기 위해 - big_lookup_object는 공유 조회 개체입니다. 나는 그것을 분할하고 별도로 처리할 필요가 없습니다. 나는 그것의 단일 사본을 유지해야 합니다. 그것을 분할해야 하는 작업은 많은 다른 큰 파일을 읽고 그 큰 파일에서 항목을 검색하는 것입니다. lookup object.

추가 업데이트: 데이터베이스는 훌륭한 솔루션이고 memcached는 더 나은 솔루션일 수 있으며 디스크의 파일(쉘브 또는 dbm)은 훨씬 더 나을 수 있습니다. 이 질문에서 제가 특히 관심이 있었던 부분은 메모리 솔루션입니다. 최종 솔루션으로 저는 hadoop을 사용할 것이지만 로컬 인메모리 버전도 사용할 수 있는지 확인하고 싶었습니다.