AnsweredAssumed Answered

Why does this script take so long to run?

Question asked by recurvata on Jan 17, 2013
Latest reply on Jan 17, 2013 by jamesfreddyc
The script below works in that it does what it's supposed to: creates a single Case feature from selected parcels. But it takes anywhere from 1.5 - 2 minutes to run, which seems a long time for a relatively simple operation. I could do it faster manually, although the people it's intended for probably couldn't  :)

Any ideas on why it's so slow, an/or what could be done to speed it up? Thanks.

import arcpy, sys, os from arcpy import env env.overwriteOutput = True  temp_lyr_location = r"\Cases_Geodatabase.gdb\temp_parcel_lyr" parcel = r"Parcel"  try:     lyr = os.getcwd() + temp_lyr_location     mxd = arcpy.mapping.MapDocument("CURRENT") except Exception as e:     arcpy.AddError('ERROR initializing: /n' + e.message)  #-------------------------------------------------------------------------------  def MakeCaseFeature():     '''  Dissolve selected parcel features into one temporary lyr file.          Append it to the Cases feature class.          Delete the temporary lyr file. '''      clear = "CLEAR_SELECTION"     target = "Cases"     schemaType = "NO_TEST"     fld = "CENTRACT"    # no data is stored in this field     selectType = "HAVE_THEIR_CENTER_IN"      try:         # make temporary parcel lyr file from selected parcels, dissolving them         # into one feature         arcpy.Dissolve_management(parcel, lyr, fld)          # add case feature in temporary layer to Cases         arcpy.Append_management(lyr, target, schemaType, "", "")          # select new case feature         arcpy.SelectLayerByLocation_management(target, selectType, lyr)          # delete temporary layer         arcpy.Delete_management(lyr)          # clear selection on parcels         arcpy.SelectLayerByAttribute_management(parcel, clear)      except Exception as e:         arcpy.AddError("ERROR in MakeCaseFeature: \n" + e.message)  #-------------------------------------------------------------------------------  def main():     ''' Check how many parcels are selected. Count returns all parcels if none are         selected, or only selected ones if there are any.     '''     try:         count = int(arcpy.GetCount_management(parcel).getOutput(0))         arcpy.AddMessage(str(count) + " parcels selected")          # make sure parcels are selected before running rest of script, otherwise exit         if count >= 0 and count <= 10:             MakeCaseFeature()       # create the case feature             arcpy.RefreshActiveView()             arcpy.RefreshTOC()         else:             arcpy.AddError("No features selected! \n Please select at least one parcel feature. \n")             arcpy.AddError("Quitting the Create Case tool \n")      except Exception as e:         arcpy.AddError('ERROR in main: /n' + e.message)  #-------------------------------------------------------------------------------  if __name__ == '__main__':     main() 

Outcomes