Alguém estudou a diferença na execução de um script Python no ArcToolbox versus como um script autônomo? Eu tive que escrever um script rápido e sujo para converter um conjunto de imagens RGB em banda única, extraindo a banda 1. Como um script independente, lendo e gravando no meu PC, ele processa 1000 imagens de tamanho idêntico em cerca de 350 segundos. A execução do mesmo script no ArcToolbox leva cerca de 1250 segundos.
import arcpy
import csv
from os import path
arcpy.env.workspace = in_folder
image_list = arcpy.ListRasters()
#Create a CSV file for timing output
with open(outfile, 'wb') as c:
cw = csv.writer(c)
cw.writerow(['tile_name', 'finish_time'])
#Start the timer at 0
start_time = time.clock()
for image in image_list:
#Extract band 1 to create a new single-band raster
arcpy.CopyRaster_management(path.join(image, 'Band_1'), path.join(out_folder, image))
cw.writerow([image, time.clock()])
Eu adicionei um código para rastrear quando cada bloco termina o processamento e exportar os resultados como um CSV. A conversão do tempo de término para o tempo de processamento ocorre no Excel. Representando graficamente os resultados, o tempo de processamento é aproximadamente o mesmo para cada bloco como um script, mas o tempo de processamento aumenta linearmente quando executado como uma ferramenta ArcGIS.
Se os dados forem lidos e gravados em um dispositivo de rede, o aumento parecerá exponencial.
Não estou procurando maneiras alternativas de realizar essa tarefa específica. Quero entender por que o desempenho desse script se degrada com o tempo ao ser executado como uma ferramenta ArcGIS , mas não como um script independente. Percebi esse comportamento com outros scripts também.