如何访问ThreadPoolExecutor的返回值?

时间:2018-04-06 09:59:52

标签: python threadpool future

说我有以下代码:

def func(a,b):
    return (func2(a),func3(3))

def paralel_func(alist,blist)
    with ThreadPoolExecutor(max_workers=None) as executor:
        executor.map(func,alist,blist)

如何访问从func返回的返回值?我试图通过认为executor.map是一个包含值但是对我没有用的列表来弄清楚自己。

3 个答案:

答案 0 :(得分:2)

我不知道您的alist和blist变量来自何处,但是您可以执行以下操作。

def func(a,b):
    return (func2(a),func3(3))

def paralel_func(alist, blist):
    processes = []
    with ThreadPoolExecutor(max_workers=None) as executor:
        processes.append(executor.map(func, alist, blist))

        for _ in concurrent.futures.as_completed(processes):
            print('Result: ', _.result())

答案 1 :(得分:1)

可能你应该试试这个

ablists = [alist, blist]

with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
    future_list= {executor.submit(func, a, b): i for i in ablists}

您可以在此处详细了解futures以及执行者

答案 2 :(得分:0)

map方法返回一个迭代器,该迭代器产生对func的调用的结果。

相关问题