Хтось вивчав різницю в застосуванні сценарію Python в ArcToolbox порівняно з окремим сценарієм? Мені довелося написати швидкий і брудний сценарій, щоб перетворити набір RGB-зображень в односмуговий діапазон шляхом вилучення діапазону 1. Як автономний сценарій читання і запису на мій ПК, він обробляє 1000 зображень однакового розміру приблизно за 350 секунд. Запуск того ж сценарію від ArcToolbox займає близько 1250 секунд.
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()])
Я додав код, щоб відстежувати, коли кожна плитка закінчує обробку, та експортувати результати як CSV. Перетворення часу закінчення на час обробки відбувається в Excel. Графікуючи результати, час обробки приблизно однаковий для кожної плитки як сценарій, але час обробки збільшується лінійно при запуску як інструмент ArcGIS.
Якщо дані, які читають і записують, належать до мережевого пристрою, збільшення виглядає експоненціальним.
Я не шукаю альтернативних способів виконання цього конкретного завдання. Я хочу зрозуміти, чому продуктивність цього сценарію знижується з часом, коли він працює як інструмент ArcGIS , а не як окремий сценарій. Я помітив таку поведінку і в інших сценаріях.