Python call multiprocessing.pool terminate方法是否关闭整个线程?

Python call multiprocessing.pool terminate方法是否关闭整个线程?,python,multiprocessing,Python,Multiprocessing,我在多处理和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, so

我在多处理和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请求进入,主进程应该创建一个新线程来处理该请求。但是由于该函数使用了多处理。主进程应该spwan一组子进程来运行标记化。但是,当令牌化正在运行时,当urse按下cancel时,令牌化进程池应该终止并返回“cancelled!”。但事实证明,前端从未得到任何响应,无论是成功响应还是取消响应。我想知道pool.terminate是否应该关闭主进程中先前运行的线程?如何实现此停止功能

如何保证相应的tokenize()和CancelTokenize()始终在同一进程中运行(即共享池)?我认为tokenize和cancel应该始终在主进程中运行,而主进程是python的web服务器运行的处理器。当新的取消请求到来时,它只生成一个新线程,并且由于池对象是全局的,所以这个新线程可以直接关闭池。如果我是corect,这肯定取决于后端的配置,但大多数设置都会有多个python处理器运行和处理请求。例如,如果使用Apache作为web服务器,则可能有多个Apache进程(worker)为请求提供服务,每个worker都有自己的python实例。