Estou interessado em aprender métodos para utilizar toda a extensão do poder de processamento multicore disponível em um computador desktop. Arc afirma que o geoprocessamento em segundo plano permite que o usuário utilize vários núcleos; no entanto, as tarefas precisam aguardar na fila para que a tarefa anterior seja concluída.
Alguém desenvolveu métodos de geoprocessamento paralelo ou multithread no Arc / Python? Existem gargalos de hardware que impedem o processamento multicore em tarefas individuais?
Encontrei um exemplo interessante no Stackoverflow que chamou minha atenção, embora não seja um exemplo de geoprocessamento:
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
.Respostas:
Aqui está um exemplo de um script arcpy multicore. O processo é muito intensivo em CPU, por isso é muito escalável : código da Porting Avenue para a produção de Building Shadows no ArcPy / Python para ArcGIS Desktop?
Algumas informações mais gerais nesta resposta: Processos simultâneos podem ser executados em um único modelo?
fonte
Na minha experiência, o maior problema é gerenciar a estabilidade. Se você executar seis semanas de processamento em uma única noite, também terá seis semanas de erros e bugs inexplicáveis.
Uma abordagem alternativa é desenvolver scripts independentes que possam ser executados independentemente e falhar sem causar problemas:
fonte