Python 使用ThreadPoolExecutor';s映射传递多个值
我正在尝试找出如何使用current.futures库中的ThreadPoolExecutor.map()。我正在使用Python 3.6 下面是代码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
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)