데스크탑 컴퓨터에서 사용할 수있는 모든 멀티 코어 처리 능력을 활용하는 방법을 배우고 싶습니다. Arc는 백그라운드 지오 프로세싱을 통해 사용자가 여러 코어를 활용할 수 있지만 이전 작업이 완료되기 위해서는 작업이 본질적으로 대기해야한다고 말합니다.
Arc / Python에서 병렬 또는 다중 스레드 지오 프로세싱 방법을 개발 한 사람이 있습니까? 개별 작업에서 멀티 코어 처리를 방해하는 하드웨어 병목 현상이 있습니까?
지오 프로세싱 예제는 아니지만 Stackoverflow에서 흥미로운 관심사를 발견했습니다.
from multiprocessing import Pool
import numpy
numToFactor = 976
def isFactor(x):
result = None
div = (numToFactor / x)
if div*x == numToFactor:
result = (x,div)
return result
if __name__ == '__main__':
pool = Pool(processes=4)
possibleFactors = range(1,int(numpy.floor(numpy.sqrt(numToFactor)))+1)
print 'Checking ', possibleFactors
result = pool.map(isFactor, possibleFactors)
cleaned = [x for x in result if not x is None]
print 'Factors are', cleaned
감사 밸브 런던. 아마도 최신 Ivy Bridge 기술과 Kepler GPU는보다 정교한 처리 방식을 허용 할 것입니다.
—
Aaron
다음은 ESRI 분석 및 지오 프로세싱 팀 제품 엔지니어의 파이썬 멀티 프로세싱에 대한 유용한 블로그 링크입니다. blogs.esri.com/esri/arcgis/2011/08/29/ 멀티 프로세싱
—
Aaron
this is not meant to discourage
.