Có ai đã nghiên cứu sự khác biệt trong việc chạy tập lệnh Python trong ArcToolbox so với tập lệnh độc lập chưa? Tôi đã phải viết một tập lệnh nhanh và bẩn để chuyển đổi một tập hợp các hình ảnh RGB thành một băng tần bằng cách trích xuất băng tần 1. Khi một tập lệnh độc lập đọc và ghi vào PC của tôi, nó xử lý 1000 hình ảnh có kích thước giống hệt nhau trong khoảng 350 giây. Chạy cùng một kịch bản từ ArcToolbox mất khoảng 1250 giây.
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()])
Tôi đã thêm một số mã để theo dõi khi mỗi ô kết thúc xử lý và xuất kết quả dưới dạng CSV. Chuyển đổi thời gian kết thúc thành thời gian xử lý xảy ra trong Excel. Vẽ đồ thị kết quả, thời gian xử lý gần như giống nhau cho mỗi ô như một tập lệnh, nhưng thời gian xử lý tăng tuyến tính khi chạy dưới dạng Công cụ ArcGIS.
Nếu dữ liệu đọc và ghi vào một thiết bị mạng, mức tăng dường như là theo cấp số nhân.
Tôi không tìm kiếm những cách khác để hoàn thành nhiệm vụ đặc biệt này. Tôi muốn hiểu tại sao hiệu suất của tập lệnh này suy giảm theo thời gian khi chạy như một công cụ ArcGIS , nhưng không phải là một tập lệnh độc lập. Tôi đã nhận thấy hành vi này với các kịch bản khác là tốt.