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

324
0
12-14-2017 12:00 PM
SebastianSchwindt
New Contributor

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

0 Kudos
0 Replies