क्या किसी ने आर्कटूलबॉक्स बनाम पायथन स्क्रिप्ट को स्टैंड-अलोन स्क्रिप्ट के रूप में चलाने के अंतर का अध्ययन किया है? मुझे आरजीबी छवियों के एक सेट को बैंड द्वारा एकल बैंड में बदलने के लिए एक त्वरित-गंदी स्क्रिप्ट लिखना था। 1. मेरे पीसी में एक स्टैंड-अलोन स्क्रिप्ट पढ़ने और लिखने के रूप में यह लगभग 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 के रूप में परिणामों को निर्यात करने के लिए मैंने कुछ कोड जोड़े हैं। एक्सेल में प्रसंस्करण समय को समाप्त करने के समय परिवर्तित करना। परिणामों को रेखांकन करते हुए, प्रसंस्करण समय प्रत्येक टाइल के लिए एक स्क्रिप्ट के रूप में लगभग समान होता है, लेकिन आर्कजीआईएस टूल के रूप में चलने पर प्रसंस्करण समय रैखिक रूप से बढ़ जाता है।
यदि डेटा पढ़ता है और लिखता है एक नेटवर्क डिवाइस के लिए, वृद्धि घातीय प्रतीत होती है।
मैं इस विशेष कार्य को पूरा करने के लिए वैकल्पिक तरीकों की तलाश नहीं कर रहा हूं। मैं यह समझना चाहता हूं कि इस स्क्रिप्ट का प्रदर्शन समय के साथ क्यों गिरता है जब एक आर्कगिस टूल के रूप में चलाया जाता है , लेकिन एक स्टैंड-अलोन स्क्रिप्ट के रूप में नहीं। मैंने इस व्यवहार को अन्य लिपियों के साथ भी देखा है।