停止主线程直到所有任务在ThreadPoolExecutor中完成- Python DJANGO

7rtdyuoh  于 2023-05-19  发布在  Go
关注(0)|答案(1)|浏览(173)

我在视图中有一些相当繁重的存储过程,我想使用线程来并行执行这些查询,但我不知道如何在这些查询完成之前停止主线程。
我的代码:

from concurrent.futures import ThreadPoolExecutor

def resultados(request):
    executor = ThreadPoolExecutor() 
    context = {}
    executor.submit(resultados_proceso, regiones, territorios, canales, marcas, periodos)
    executor.submit(resultadosGrafica_proceso,regiones, territorios, canales, marcas, periodos)
    executor.submit(get_volumen_ejecucion_clientes_iniciativa, 106)
    executor.submit(get_volumenAP_xmarca, ['M'])

return render(request, 'resultados.html', context)

def resultados_proceso(context, regiones, territorios, canales, marcas, periodos):
    context['resultados'] = getResultados(regiones, territorios, canales, marcas, periodos)

def resultadosGrafica_proceso(context, regiones, territorios, canales, marcas, periodos):
    context['grafica'] = getResultadosGrafica(regiones, territorios, canales, marcas, periodos)
xmd2e60i

xmd2e60i1#

你是指当前的请求-响应线程吗?
IIRC,你可以调用'result'方法。
那么

with concurrent.futures.ThreadPoolExecutor() as executor:
    future1 = executor.submit(do_something, 1.7)
    future2 = executor.submit(do_something_2, 1.7)

    future1.result()
    future2.result()  # will block current thread

希望能帮上点忙。
我还将尝试探索异步库,它可以等待结果而不会阻塞。

相关问题