如何将关键字参数传递给concurrent.futures map调用调用的函数

时间:2017-02-02 12:40:08

标签: python dictionary concurrency concurrent.futures

我有以下代码:

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调用重复的网址。

1 个答案:

答案 0 :(得分:3)

在执行spam

时,您可以将map包裹在lambda中
res = executor.map(lambda x,y:spam(x,params=y), urls, params)