ArcCatalog 10.6
I made a toolbox script that uses multiprocessing. The tool runs fine if left to complete but if the cancelled button is pressed I can't get it terminate the pool. I am fairly new to python and arcpy, but I did find the env.autoCancelling and env.isCancelled and have tried that but not very successfully.
simplified example (not actual code)
import multiprocessing
import arcpy
arcpy.env.autoCancelling = False
NUM_FINISHED = 0
FINISHED = False
def on_complete(results)
global NUM_FINISHED
global FINISHED
if results:
NUM_FINISHED += 1
if NUM_FINISHED == 10
FINISHED = True
def check_processes(pool)
global FINISHED
while True:
time.sleep(10)
if arcpy.env.isCancelled:
pool.terminate()
if FINISHED:
return
def processes_stuff()
''' do stuff here'''
def main(peram_one, peram_two)
pool = multiprocessing.pool(10)
for i in range(10):
pool.apply_async(process_stuff, args=(peram_one, peram_two), callback=on_complete)
pool.close()
check_processes(pool)
...
if __name__=='__main__':
in_feature = arcpy.GetPerameterAsText(0)
to_buffer = arcpy.GetPerameter(1)
main(in_feature, to_buffer)
arcpy.SetPerameterasText(2, in_feature)
When the cancel button is pressed, the processes are sill running and never cancel and the cpu stays at 100% even though they become completely detached from ArcCatalog and the GUI from ArcCatalog shows that it was cancelled. What am I missing?