我试图找出如何在current.futures库中使用ThreadPoolExecutor.map()。我正在使用Python 3.6。
这是下面显示的代码
import concurrent.futures
def add(x,y):
return x+y
with concurrent.futures.ThreadPoolExecutor(1) as executor:
res = executor.map(add, *(1,2)) # Fails
我的问题是,当我传递参数时,出现以下错误:
builtins.TypeError: zip argument #1 must support iteration
Python文档上的示例仅显示使用一个变量作为输入,但是我想对map函数使用N个变量。我该怎么做?
我真的很想敲这个,如果有人能指出我如何格式化输入参数,我将不胜感激。
我希望能够做这样的事情:
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(add, *numbers)
请告诉我有关如何格式化参数输入的信息。
答案 0 :(得分:2)
您可以使用lambda进行以下操作:
import Vue from "vue";
import test1Html from "../Home/test1.cshtml";
document.addEventListener('DOMContentLoaded', function (event) {
Vue.component('test1',{
mounted: function () {
console.log('mounted test1');
},
template: test1Html,
data: function () {
return {
message: "try test1 binding",
list: ['one','two','three','four','five']
};
}
});
});
答案 1 :(得分:1)
您需要创建一个包装函数,该函数接受单个arg(元组),并使用*
将其传递给add
函数。
注意:您还希望迭代结果以实际访问它们:
import concurrent.futures
def add(x, y):
return x + y
numbers = [
(1, 2), (2, 3), (3, 10)
]
res = []
with concurrent.futures.ThreadPoolExecutor(1) as executor:
for r in executor.map(lambda t: add(*t), numbers):
res.append(r)
print(res)