¿Alguien ha estudiado la diferencia en la ejecución de un script de Python en ArcToolbox frente a un script independiente? Tuve que escribir un script rápido y sucio para convertir un conjunto de imágenes RGB en una sola banda extrayendo la banda 1. Como un script independiente que lee y escribe en mi PC, procesa 1000 imágenes de tamaño idéntico en aproximadamente 350 segundos. Ejecutar el mismo script desde ArcToolbox toma aproximadamente 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()])
Agregué un código para rastrear cuando cada mosaico termina de procesarse y exportar los resultados como un CSV. La conversión del tiempo de finalización al tiempo de procesamiento ocurre en Excel. Graficando los resultados, el tiempo de procesamiento es aproximadamente el mismo para cada mosaico que un script, pero el tiempo de procesamiento aumenta linealmente cuando se ejecuta como una herramienta ArcGIS.
Si las lecturas y escrituras de datos son para un dispositivo de red, el aumento parece ser exponencial.
No estoy buscando formas alternativas de lograr esta tarea en particular. Quiero entender por qué el rendimiento de este script se degrada con el tiempo cuando se ejecuta como una herramienta ArcGIS , pero no como un script independiente. También he notado este comportamiento con otros scripts.