Quelqu'un a-t-il étudié la différence dans l'exécution d'un script Python dans ArcToolbox par rapport à un script autonome? J'ai dû écrire un script rapide et sale pour convertir un ensemble d'images RVB en bande unique en extrayant la bande 1. En tant que script autonome lisant et écrivant sur mon PC, il traite 1000 images de taille identique en environ 350 secondes. L'exécution du même script à partir d'ArcToolbox prend environ 1250 secondes.
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()])
J'ai ajouté du code pour suivre la fin du traitement de chaque mosaïque et exporter les résultats au format CSV. La conversion de l'heure de fin en temps de traitement se produit dans Excel. Représentant graphiquement les résultats, le temps de traitement est à peu près le même pour chaque mosaïque qu'un script, mais le temps de traitement augmente linéairement lorsqu'il est exécuté en tant qu'outil ArcGIS.
Si les données sont lues et écrites sur un périphérique réseau, l'augmentation semble exponentielle.
Je ne cherche pas d'autres moyens d'accomplir cette tâche particulière. Je veux comprendre pourquoi les performances de ce script se dégradent au fil du temps lorsqu'il est exécuté en tant qu'outil ArcGIS , mais pas en tant que script autonome. J'ai également remarqué ce comportement avec d'autres scripts.