Estoy interesado en aprender métodos para utilizar toda la potencia de procesamiento multinúcleo disponible en una computadora de escritorio. Arc afirma que el geoprocesamiento en segundo plano permite al usuario utilizar múltiples núcleos, sin embargo, las tareas esencialmente tienen que esperar en línea para que se complete la tarea anterior.
¿Alguien ha desarrollado métodos de geoprocesamiento paralelos o multiproceso en Arc / Python? ¿Hay cuellos de botella de hardware que impiden el procesamiento multinúcleo en tareas individuales?
Encontré un ejemplo interesante en Stackoverflow que me llamó la atención, aunque no es un ejemplo de geoprocesamiento:
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
.Respuestas:
Aquí hay un ejemplo de un script arcpy multinúcleo. El proceso requiere mucha CPU, por lo que se escala muy bien: ¿ Código de Porting Avenue para producir Building Shadows en ArcPy / Python for ArcGIS Desktop?
Alguna información más general en esta respuesta: ¿Se pueden ejecutar procesos concurrentes en un solo modelo?
fuente
En mi experiencia, el mayor problema es gestionar la estabilidad. Si realiza seis semanas de procesamiento en una sola noche, también tendrá seis semanas de errores e errores inexplicables.
Un enfoque alternativo es desarrollar scripts independientes que puedan ejecutarse independientemente y fallar sin causar problemas:
fuente