มีใครศึกษาความแตกต่างในการใช้งานสคริปต์ Python ใน ArcToolbox กับสคริปต์แบบสแตนด์อโลนหรือไม่? ฉันต้องเขียนสคริปต์ที่รวดเร็วและสกปรกเพื่อแปลงชุดของภาพ RGB เป็นแบนด์เดียวโดยแยกแบนด์ 1 เนื่องจากการอ่านและเขียนสคริปต์แบบสแตนด์อโลนในพีซีของฉันมันประมวลผลภาพขนาดเท่ากัน 1,000 รายการในเวลาประมาณ 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แต่ไม่ใช่สคริปต์แบบสแตนด์อะโลน ฉันได้สังเกตเห็นพฤติกรรมนี้กับสคริปต์อื่น ๆ เช่นกัน