[이것은 나의 첫 번째 글이며 SE의 사용법을 완전히 오해하지 않았기를 바랍니다.-그렇다면 사전에 사과드립니다]
본인은 제공된 정보를 바탕으로 질문에 답변하기가 매우 어렵다는 "bgschaid"에 동의합니다. 저수준 루틴이 멀티 코어 아키텍처를 활용하기를 원하거나 당혹스럽게 병렬 문제 또는 그 사이의 무언가에 대해 병렬 처리를 사용해야하는 경우 큰 차이가 있습니다. 파이썬에서 다른 병렬 컴퓨팅 가능성에 대한 개요는 여기 에서 찾을 수 있습니다 .
전자의 경우 최소한 Enthought의 MKL 컴파일 버전에서 멀티 코어 아키텍처를 지원하는 NumPy / SciPy 와 같은 도구를 사용하는 것이 좋습니다 . 여기서 환경 변수 "MKL_NUM_THREADS"를 통해 사용할 코어 수를 제어 할 수 있습니다. 이것은 성능을 능가 할 것으로 기대할 수없는 고도로 최적화 된 라이브러리에 의존합니다. 나는 일반적으로 가능할 때마다 이러한 고품질의 고도로 최적화 된 라이브러리를 사용하는 것이 좋습니다.
거친 수준에서 병렬 처리를 활용하려면 Python 표준 도구 다중 처리 가 사용하기 쉽고 공유 데이터 객체도 지원합니다. 멀티 프로세싱 패키지의 일부로 사용할 여러 도구가 있습니다 . 내가 사용이 map_async (SIMD 등) apply_async 좋은 결과 몇 가지 문제에 대한 (같은 MIMD을). 멀티 프로세싱 패키지는 매우 사용하기 쉬운 당신은 쉽게 당신의 코드의 다른 잠재적 인 사용자가 사용할 수있을 것으로 예상 할 수있는 파이썬 수단의 표준되고있다. 멀티 프로세싱 은 NumPy 데이터 객체에 직접 연결됩니다. 멀티 프로세싱을 사용하는 경우NumPy 가 각 프로세스 / 작업자마다 하나의 코어 만 허용되도록 환경 변수 "MKL_NUM_THREADS"를 1로 설정하는 것이 좋습니다. 그렇지 않으면 NumPy 병렬과 멀티 프로세싱 간에 리소스 경합이 발생 하여 성능이 저하 될 수 있습니다. 멀티 프로세싱 은 동일한 운영 체제에서 멀티 CPU / 멀티 코어 아키텍처에 적합합니다. 4 개의 Xeon E7-4850 CPU (각 10 코어) 및 512GB 메모리가있는 공유 메모리 컴퓨터에서 멀티 프로세싱 을 사용 했으며 매우 잘 작동했습니다. 공유 배열은 multiprocessing.Array 또는 sharedctypes 로 처리 할 수 있습니다 . 여기 에서 파이썬 문서를 찾을 수 있습니다 .library.pdf 파일. 나는 이것의 기본 부분 중 일부를 설명하는 슬라이드를 가지고 있습니다.
분산 메모리가있는 클러스터 구성이 있다면 mpi4py 가 선호되는 도구 일 것입니다. 나는 이것을 직접 사용하지는 않았지만 파이썬 병렬 프로그래밍에서 많이 사용되고 있음을 알고 있습니다.