AnsweredAssumed Answered

Has anyone experience with multithread (concurrent.future) applications using arcpy?

Question asked by sschwindt on Dec 14, 2017

Hi,

 

Map processing can take time - for other python applications, I successfully applied the concurrent.future package but python crashes in combination with arcpy. My guess is a problem with the license CheckOut (server licenses) which works fine with multiple calls of the ArcGIS 10.5 GUI but not with python.

 

Here an example of my code:

import concurrent.futures
import arcpy
def sub(parameter):
   arcpy.CheckOutExtension('Spatial')
   lifespan = Lifespan_Assessment(parameter)
   arcpy.CheckInExtension('Spatial') # release license

def main():
   test_parameters = np.array(["parameter1", "parameter2", "parameter3"])
   with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
      executor.submit(sub, test_parameters[0])
      executor.submit(sub, test_parameters[1])
      executor.submit(sub, test_parameters[2])

if __name__ == "__main__":
    main()

 

Running this code leads to either:

1) Program crashes or

2) Program is non-responsive (without crashing but is has the same utility as crashing though)

 

Alternatively, I tried calling CheckOutExtension('Spatial') before the "executor.submit(...)" or within my class "Lifespan_Assessment()". Both options lead to python crashes.

 

Does anyone have experience with applying concurrent.features on arcpy? What am I doing wrong? Does anyone know alternatives?

 

I'm grateful for any kind of hint - thanks in advance,

Sebastian

Outcomes