Python 使用ThreadPoolExecutor';s映射传递多个值

Python 使用ThreadPoolExecutor';s映射传递多个值,python,python-3.x,concurrent.futures,Python,Python 3.x,Concurrent.futures,我正在尝试找出如何使用current.futures库中的ThreadPoolExecutor.map()。我正在使用Python 3.6 下面是代码 import concurrent.futures def添加(x,y): 返回x+y 并发.futures.ThreadPoolExecutor(1)作为执行者: res=executor.map(add,*(1,2))#失败 我的问题是,当我传递参数时,会出现以下错误: builtins.TypeError: zip argument #1

我正在尝试找出如何使用current.futures库中的ThreadPoolExecutor.map()。我正在使用Python 3.6

下面是代码

import concurrent.futures
def添加(x,y):
返回x+y
并发.futures.ThreadPoolExecutor(1)作为执行者:
res=executor.map(add,*(1,2))#失败
我的问题是,当我传递参数时,会出现以下错误:

builtins.TypeError: zip argument #1 must support iteration
Python文档上的示例仅显示使用一个变量作为输入,但我想使用N个变量作为map函数。我该怎么做

我真的很抓狂,如果有人能告诉我如何格式化我的输入参数,我将不胜感激

我希望能够做到以下几点:

import concurrent.futures
def添加(x,y):
返回x+y
数字=[
(1,2), (2,3), (3,10)
]
并发.futures.ThreadPoolExecutor(1)作为执行者:
res=executor.map(添加,*个数字)

请告诉我如何格式化参数输入。

您需要创建一个包装函数,该函数接受单个参数(元组),并使用
*
将其传递给
添加
函数

注意:您还希望迭代结果以实际访问它们:

import concurrent.futures
def添加(x,y):
返回x+y
数字=[
(1, 2), (2, 3), (3, 10)
]
res=[]
并发.futures.ThreadPoolExecutor(1)作为执行者:
对于executor.map中的r(lambda t:add(*t),数字):
res.append(r)
打印(res)

您可以使用lambda执行以下操作:

import concurrent.futures
def add(x,y):
    return x+y
numbers = [(1,2), (2,3), (3,10)]
with concurrent.futures.ThreadPoolExecutor(1) as executor:
    res = executor.map(lambda args : add(*args), numbers)