我在多处理和django框架中使用池。我有这样的代码
def tokenize(request) :
global pool
pool = Pool(processes=32,initializer= compute_customizedStopwords, initargs=())
global canceled
canceled = False
for i in range(100) :
pool.apply(sometask, someargs)
if canceled :
return HttpResponse("canceled")
return HttpResponse("successful!")
def cancelTokenization(request):
pool.terminate()
canceled = True
return HttpResponse()
当用户按下tokenize按钮时,会出现一个新的Web请求,并且主进程应该创建一个新线程来解决此请求。但是由于此函数使用了多处理。主进程应该运行一堆子进程来运行标记化。但是当令牌化正在运行时,当urse按下取消时,标记化进程池应该终止并返回“已取消!”。但事实证明,前端永远不会得到任何回应,无论是成功还是取消。我想知道pool.terminate是否应该关闭主进程中先前运行的线程?我该如何实现这个停止功能。