मैं पायथन जियोप्रोसेसिंग स्क्रिप्ट के साथ असामान्य प्रदर्शन देख रहा हूं। स्क्रिप्ट (संलग्न) स्क्रिप्ट निम्नलिखित क्रियाएं करती है:
- बहुभुज सुविधाओं के अनुरूप UTM ज़ोन देखने के लिए एक खोज कर्सर का उपयोग करें
- खोज कर्सर परिणामों के आधार पर स्थानिक संदर्भ ऑब्जेक्ट बनाएं
- कन्वर्ट .csv को लेयर और फिर एक पॉइंट फीचर क्लास में
मैंने स्क्रिप्ट के चलने के आधार पर स्पष्ट रूप से भिन्न प्रसंस्करण समय देखा है:
- आईडीएल = 203 सेकंड का उपयोग करके 32-बिट प्रसंस्करण
- 32-बिट प्रसंस्करण अग्रभूमि स्क्रिप्ट उपकरण = 91 सेकंड
- 64-बिट प्रोसेसिंग बैकग्राउंड स्क्रिप्ट टूल = 206 सेकंड
यह स्क्रिप्ट उपरोक्त स्थितियों को देखते हुए अलग-अलग प्रदर्शन क्यों करेगी? मैं निश्चित रूप से उम्मीद नहीं करूंगा कि 32-बिट स्क्रिप्ट टूल अग्रभूमि में 2X के रूप में अन्य विधियों के रूप में तेज़ हो।
import arcpy, os, time
###IDLE Parameters
##fc = r'C:\path\to\polygon\fc\with\utm\zones\and\features'
##outws = r'C:\out\location'
##arcpy.env.workspace = r'C:\workspace'
####################
## Script tool parameters
fc = arcpy.GetParameterAsText(0) # Feature class
outws = arcpy.GetParameterAsText(1) # Folder
arcpy.env.workspace = arcpy.GetParameterAsText(2) # Workspace
####################
# Tables are .csv
tables = arcpy.ListTables()
start = time.clock()
# Look up which UTM zone .csv features are in
for t in tables:
quad = t[7:17]
print quad
whereClause = """ "QUADID" LIKE '%s' """ % quad
with arcpy.da.SearchCursor(fc, ("QUADID","ZONE"), whereClause) as cursor:
for row in cursor:
if row[0] == quad:
utmZone = row[1]
if utmZone == 10:
sr = arcpy.SpatialReference(26910) # NAD_1983_UTM_Zone_10N
elif utmZone == 11:
sr = arcpy.SpatialReference(26911) # NAD_1983_UTM_Zone_11N
elif utmZone == 12:
sr = arcpy.SpatialReference(26912) # NAD_1983_UTM_Zone_12N
elif utmZone == 13:
sr = arcpy.SpatialReference(26913) # NAD_1983_UTM_Zone_13N
else:
print "The UTM Zone is outside 10-13"
else:
pass
# Convert .csv to feature class
try:
outLayer = "in_memory"
# Now with the sr defined, create the XY Event Layer
arcpy.MakeXYEventLayer_management(t, "x", "y", outLayer, sr, "z")
arcpy.FeatureClassToFeatureClass_conversion(outLayer, outws, t[7:17])
arcpy.Delete_management("in_memory")
end = time.clock()
print "In_memory method finished in %s seconds" % (end - start)
except:
# Print any error messages
print arcpy.GetMessages(2)
print "Processing complete"
import arcpy
में पहले ध्यान देने योग्य बात है क्योंकि ऐसा लगता है कि समय केवल आपके तीन परीक्षणों के आईडीएलई और 64 बिट मार्गों द्वारा आवश्यक है, लेकिन लगभग दो मिनट जोड़ना अत्यधिक लगता है। एक उपकरण चलाने की कोशिश करें जो आर्कपी के आयात के समय से अधिक कुछ नहीं करता है।
import arcpy
रेखा है। पिछली बार मैंने आर्कपी का इस्तेमाल किया था जो बाहर से आयात करने में धीमा था। आर्कगिस के पास पहले से ही अपने आंतरिक पायथन में आयात होता है, इसलिए आयात पहले से ही कैश है।
General python doc
] [ docs.python.org/2/library/profile.html] और [ stackexchange posting
] [ stackoverflow.com/questions/582336/… ।