60GB SciPy Array (Matrix)가 있는데 5 multiprocessing
Process
개 이상의 개체 간에 공유해야 합니다. numpy-sharedmem을 보았고 SciPy 목록 에서이 토론 을 읽었습니다 . 두 가지 접근 방식이있는 것 같습니다. numpy-sharedmem
a를 사용하고 multiprocessing.RawArray()
NumPy를 dtype
s에 매핑 ctype
합니다. 이제 numpy-sharedmem
갈 길인 것 같지만 아직 좋은 참조 예를 보지 못했습니다. 배열 (실제로는 행렬)이 읽기 전용이기 때문에 어떤 종류의 잠금도 필요하지 않습니다. 이제 크기 때문에 사본을 피하고 싶습니다. 그것은 같은데 정확한 방법은 생성하는 단 A와 배열의 카피 sharedmem
배열하고 그것이 패스 Process
개체? 몇 가지 구체적인 질문 :
실제로 sharedmem 핸들을 서브에 전달하는 가장 좋은 방법은 무엇입니까
Process()
? 하나의 배열을 전달하기 위해 대기열이 필요합니까? 파이프가 더 좋을까요?Process()
서브 클래스의 init (피클이라고 가정하는 곳)에 인수로 전달할 수 있습니까 ?위에서 링크 한 토론
numpy-sharedmem
에서 64 비트 안전하지 않다는 언급이 있습니까? 32 비트 주소 지정이 불가능한 구조를 확실히 사용하고 있습니다.RawArray()
접근 방식에 트레이드 오프가 있습니까? 더 느리게, 벌레?numpy-sharedmem 메서드에 대해 ctype-to-dtype 매핑이 필요합니까?
누구든지 이것을 수행하는 일부 OpenSource 코드의 예가 있습니까? 나는 매우 실습을 배웠고 어떤 종류의 좋은 예 없이는 이것을 작동시키기가 어렵습니다.
다른 사람들을 위해 이것을 명확히하는 데 도움이되는 추가 정보가 있으면 의견을 남겨 주시면 추가하겠습니다. 감사!
이것은 Ubuntu Linux 및 Maybe Mac OS에서 실행되어야하지만 이식성은 큰 문제가 아닙니다.
multiprocessing
경우 각 프로세스에 대해 전체 내용을 복사 할 수 있습니다.