2

두 개의 매개 변수가 주어진 코드가 있는데, (k, m)이 4d numpy 배열을 반환 할 것이고, 필자의 요구 사항은 (k, m)의 가능한 값에 대해이 배열을 계산해야한다는 것입니다. k, m < N 그리고 그들을 추가하십시오. 이것은 직렬로 느리기 때문에 파이썬에서 멀티 프로세싱 모듈을 배우려고합니다. https://docs.python.org/2/library/multiprocessing.html파이썬 다중 처리 모듈, 공유 다차원 배열

본질적으로 필자는이 8d 어레이를 병렬로 계산하여 모두 추가하기 위해 8 코어를 사용하고 싶습니다. 이제 문제는이를 설계하는 방법입니다. 각 배열은 약 100 MB 및 N 약 20 일 수 있습니다. 따라서 대기열에 20 ** 2 * 100 MB를 저장하는 것은 불가능합니다. 솔루션은 각 프로세스가 결과를 계속 추가 할 결과 배열 인 공유 메모리 객체를 갖는 것입니다.

다중 처리에는 공유 메모리 또는 서버 프로세스를 사용하여이를 수행하는 두 가지 방법이 있습니다. 둘 다 mutlidim 배열을 지원하는 것 같지 않습니다. 누구든지 내 프로그램을 구현할 방법을 제안 할 수 있습니까? 미리 Thx.

+1

['numpy.memmap()'] (http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.memmap.html) 도움을 줄 수도 있고 아닐 수도 있습니다. 여기를보세요 http://stackoverflow.com/questions/17785275/share-large-read-only-numpy-array-between-multiprocessing-processes for pointers. –

+0

[다중 처리를 위해 공유 메모리에서 numpy 배열 사용] 가능한 중복 (http://stackoverflow.com/questions/7894791/use-numpy-array-in-shared-memory-for-multiprocessing) – ppperry

답변

1

한 가지 방법은 부모 프로세스에 memory mapped arrays을 만들고이를 채우기 위해 자식에게 전달하는 것입니다. 또한 모든 매핑 된 배열에 대해 multiprocessing.Event을 가져야하므로 chld 프로세스는 배열이 완료되었음을 부모에게 알릴 수 있습니다.