Кто-нибудь изучал разницу в запуске скрипта 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 , а не как отдельного скрипта. Я заметил это поведение и с другими скриптами.