Qualcuno ha studiato la differenza nell'esecuzione di uno script Python in ArcToolbox rispetto a uno script autonomo? Ho dovuto scrivere uno script veloce e sporco per convertire un set di immagini RGB in una singola banda estraendo la banda 1. Come script autonomo, leggendo e scrivendo sul mio PC, elabora 1000 immagini di dimensioni identiche in circa 350 secondi. L'esecuzione dello stesso script da ArcToolbox richiede circa 1250 secondi.
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()])
Ho aggiunto del codice per tracciare quando ogni riquadro termina l'elaborazione ed esportare i risultati come CSV. La conversione del tempo di fine in tempo di elaborazione si verifica in Excel. Rappresentando graficamente i risultati, il tempo di elaborazione è all'incirca lo stesso per ogni riquadro di uno script, ma il tempo di elaborazione aumenta linearmente quando eseguito come strumento ArcGIS.
Se i dati vengono letti e scritti su un dispositivo di rete, l'aumento sembra essere esponenziale.
Non sto cercando modi alternativi per svolgere questo particolare compito. Voglio capire perché le prestazioni di questo script peggiorano nel tempo quando vengono eseguite come strumento ArcGIS , ma non come script autonomo. Ho notato questo comportamento anche con altri script.