デスクトップコンピューターで利用可能なマルチコア処理能力を最大限に活用するための学習方法に興味があります。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
ありがとう、valveLondon。おそらく、より新しいIvy BridgeテクノロジーとKepler GPUにより、より洗練された処理アプローチが可能になります。
—
アーロン
ESRI分析およびジオプロセシングチームのプロダクトエンジニアによる、Pythonマルチプロセッシングに関する便利なブログへのリンクを次に示します。 blogs.esri.com/esri/arcgis/2011/08/29/multiprocessing
—
アーロン
this is not meant to discourage
。