Hat jemand den Unterschied zwischen dem Ausführen eines Python-Skripts in ArcToolbox und dem Ausführen eines eigenständigen Skripts untersucht? Ich musste ein schnelles und schmutziges Skript schreiben, um eine Reihe von RGB-Bildern durch Extrahieren von Band 1 in ein einzelnes Band zu konvertieren. Als eigenständiges Skript, das auf meinem PC liest und schreibt, verarbeitet es 1000 Bilder gleicher Größe in etwa 350 Sekunden. Das Ausführen desselben Skripts in ArcToolbox dauert ungefähr 1250 Sekunden.
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()])
Ich habe Code hinzugefügt, um zu verfolgen, wann jede Kachel die Verarbeitung beendet hat, und die Ergebnisse als CSV zu exportieren. Die Konvertierung der Endzeit in die Verarbeitungszeit erfolgt in Excel. Bei der grafischen Darstellung der Ergebnisse ist die Verarbeitungszeit für jede Kachel als Skript ungefähr gleich, aber die Verarbeitungszeit erhöht sich linear, wenn sie als ArcGIS-Tool ausgeführt wird.
Wenn die Daten auf ein Netzwerkgerät gelesen und geschrieben werden, scheint der Anstieg exponentiell zu sein.
Ich suche nicht nach alternativen Wegen, um diese spezielle Aufgabe zu erfüllen. Ich möchte verstehen, warum sich die Leistung dieses Skripts im Laufe der Zeit verschlechtert, wenn es als ArcGIS-Tool ausgeführt wird , jedoch nicht als eigenständiges Skript. Ich habe dieses Verhalten auch bei anderen Skripten bemerkt.