Saya tertarik pada metode pembelajaran untuk memanfaatkan sepenuhnya kekuatan pemrosesan multicore yang tersedia di komputer desktop. Arc menyatakan bahwa geoprocessing latar belakang memungkinkan pengguna untuk menggunakan banyak core, namun, tugas-tugas pada dasarnya harus menunggu dalam antrian untuk menyelesaikan tugas sebelumnya.
Adakah yang mengembangkan metode geoproses paralel atau multithreaded di Arc / Python? Apakah ada hambatan perangkat keras yang mencegah pemrosesan multicore pada tugas individu?
Saya menemukan contoh menarik di Stackoverflow yang menarik minat saya, meskipun itu bukan contoh geoproses:
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
this is not meant to discourage
.Jawaban:
Berikut adalah contoh skrip arcpy multicore. Prosesnya sangat intensif-CPU sehingga berskala sangat baik: Porting Avenue kode untuk Menghasilkan Building Shadows ke ArcPy / Python untuk ArcGIS Desktop?
Beberapa info yang lebih umum dalam jawaban ini: Dapatkah proses bersamaan dijalankan dalam model tunggal?
sumber
Dalam pengalaman saya, masalah terbesar adalah mengelola stabilitas. Jika Anda melakukan enam minggu pemrosesan dalam satu malam, Anda juga akan memiliki enam minggu kesalahan dan bug yang tidak dapat dijelaskan.
Pendekatan alternatif adalah mengembangkan skrip mandiri yang dapat berjalan secara independen dan gagal tanpa menimbulkan masalah:
sumber