我有以下代码:
from concurrent.futures import ThreadPoolExecutor
def spam(url, hello=None, params=None):
print(url, hello, params)
urls = [1, 2, 3, 4, 5]
params = [(6, 7), 7, ('a', 1), 9, 'ab']
with ThreadPoolExecutor(5) as executor:
res = executor.map(spam, urls, params)
这预计会打印出来:
1 (6, 7) None
2 7 None
3 ('a', 1) None
4 9 None
5 ab None
有没有办法告诉map
函数使用特定关键字参数调用spam
?在这个例子中,我希望将值传递给hello
参数而不是下一行(在这种情况下是params
)。
我尝试解决的真实用例是将params=
值传递给request.get
调用重复的网址。
答案 0 :(得分:3)
在执行spam
map
包裹在lambda中
res = executor.map(lambda x,y:spam(x,params=y), urls, params)