파이썬 지오 프로세싱 스크립트에서 비정상적인 성능을 관찰했습니다. (첨부) 스크립트는 다음 작업을 수행합니다.
- 검색 커서를 사용하여 다각형 피쳐에 해당하는 UTM 영역을 조회
- 검색 커서 결과를 기반으로 공간 참조 객체 생성
- .csv를 피처 레이어로 변환 한 다음 포인트 피처 클래스로 변환
스크립트 실행 방법에 따라 처리 시간이 현저히 다릅니다.
- IDLE = 203 초를 사용한 32 비트 처리
- 32 비트 처리 포 그라운드 스크립트 도구 = 91 초
- 64 비트 처리 백그라운드 스크립트 도구 = 206 초
위의 조건에서이 스크립트가 다르게 작동하는 이유는 무엇입니까? 포 그라운드에서 실행되는 32 비트 스크립트 도구가 다른 방법보다 2 배 빠르지는 않을 것입니다.
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
먼저 고려해야 할 가치가 있다고 생각합니다. 왜냐하면 세 가지 테스트의 IDLE 및 64 비트 경로에만 시간이 필요한 것처럼 보이지만 거의 2 분을 추가하면 과도한 것으로 보입니다. ArcPy를 가져 오는 데 시간이 지나지 않는 도구를 실행 해보십시오.
import arcpy
라인 이라고 말하는 것이 안전합니다 . 마지막으로 arcpy를 사용했을 때 외부에서 가져 오는 것이 느 렸습니다. ArcGIS는 이미 내부 Python으로 가져 왔으므로 가져 오기가 이미 캐시되었습니다.
General python doc
] [ docs.python.org/2/library/profile.html] 및 [ stackexchange posting
] [ stackoverflow.com/questions/582336/… .