Adakah yang mempelajari perbedaan dalam menjalankan skrip Python di ArcToolbox dibandingkan sebagai skrip yang berdiri sendiri? Saya harus menulis skrip cepat-dan-kotor untuk mengubah satu set gambar RGB menjadi satu band dengan mengekstraksi band 1. Sebagai skrip yang berdiri sendiri membaca dan menulis ke PC saya itu memproses 1000 gambar berukuran identik dalam waktu sekitar 350 detik. Menjalankan skrip yang sama dari ArcToolbox membutuhkan waktu sekitar 1250 detik.
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()])
Saya menambahkan beberapa kode untuk dilacak ketika setiap ubin selesai diproses, dan mengekspor hasilnya sebagai CSV. Mengonversi waktu selesai ke waktu pemrosesan terjadi di Excel. Grafik hasil, waktu pemrosesan kira-kira sama untuk setiap ubin sebagai skrip, tetapi waktu pemrosesan meningkat secara linear ketika dijalankan sebagai Alat ArcGIS.
Jika data membaca dan menulis adalah ke perangkat jaringan, kenaikan tampaknya eksponensial.
Saya tidak mencari cara alternatif untuk menyelesaikan tugas khusus ini. Saya ingin memahami mengapa kinerja skrip ini menurun seiring waktu ketika dijalankan sebagai alat ArcGIS , tetapi bukan sebagai skrip yang berdiri sendiri. Saya perhatikan perilaku ini dengan skrip lain juga.