Sono interessato ai metodi di apprendimento per utilizzare tutta la potenza di elaborazione multicore disponibile su un computer desktop. Arc afferma che il geoprocessing in background consente all'utente di utilizzare più core, tuttavia le attività devono essenzialmente attendere in linea per il completamento dell'attività precedente.
Qualcuno ha sviluppato metodi di geoprocessing paralleli o multithread in Arc / Python? Ci sono colli di bottiglia hardware che impediscono l'elaborazione multicore su singole attività?
Ho trovato un esempio interessante in StackOverflow che ha attirato il mio interesse, sebbene non sia un esempio di geoprocessing:
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
.