Herkes tek başına komut dosyası olarak ArcToolbox bir Python komut dosyası çalıştırma farkı inceledi mi? Bant 1 ayıklayarak bir dizi RGB görüntüsünü tek bir banda dönüştürmek için hızlı ve kirli bir komut dosyası yazmak zorunda kaldım. Tek başına bir komut dosyası bilgisayarıma okuma ve yazma olarak yaklaşık 350 saniyede 1000 özdeş boyutlu görüntü işler. Aynı komut dosyasını ArcToolbox'tan çalıştırmak yaklaşık 1250 saniye sürer.
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()])
Her döşemenin işlenmesi bittiğinde izlemek için bazı kodlar ekledim ve sonuçları bir CSV olarak dışa aktardım. Excel'de bitiş saatini işlem süresine dönüştürme. Sonuçları grafik olarak, işlem süresi her döşemenin bir komut dosyası ile kabaca aynıdır, ancak bir ArcGIS Aracı olarak çalıştırıldığında işlem süresi doğrusal olarak artar.
Veriler bir ağ aygıtına okur ve yazarsa, artış katlanarak artar.
Bu görevi yerine getirmenin alternatif yollarını aramıyorum. Bu komut dosyasının performansının neden bir ArcGIS aracı olarak çalıştırıldığında zaman içinde azaldığını , ancak tek başına bir komut dosyası olarak neden olmadığını anlamak istiyorum . Bu davranışı diğer komut dosyalarıyla da fark ettim.