ArcToolbox에서 Python 스크립트를 실행하는 것과 독립형 스크립트를 실행하는 것의 차이점을 연구 한 사람이 있습니까? 대역 1을 추출하여 RGB 이미지 세트를 단일 대역으로 변환하기 위해 빠르고 더러운 스크립트를 작성해야했습니다. 독립형 스크립트는 내 PC로 읽고 쓰는 약 350 초 안에 동일한 크기의 1000 개의 이미지를 처리합니다. 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 Tool로 실행하면 처리 시간이 선형으로 증가합니다.
데이터 읽기 및 쓰기가 네트워크 장치에 대한 경우에는 증가가 기하 급수적으로 나타납니다.
이 특정 작업을 수행하는 다른 방법을 찾고 있지 않습니다. ArcGIS 도구로 실행할 때이 스크립트의 성능이 시간이 지남에 따라 저하되는 이유를 이해하고 싶지만 독립형 스크립트는 아닙니다. 다른 스크립트 에서도이 동작을 발견했습니다.