我遇到一种情况,我需要并行运行该函数以获取python中的值列表。我从concurrent.futures
了解到executor.map可以完成这项工作。而且我能够使用以下语法executor.map(func,[values])
来并行化该函数。
但是现在,我遇到了相同的情况(即函数必须并行运行),但是函数签名不同于之前的签名和下面给出的签名。
def func(search_id,**kwargs):
# somecode
return list
container = []
with concurrent.futures.ProcessPoolExecutor() as executor:
container.extend(executor.map(func, (searchid,sitesearch=site),[list of sites]))
我不知道如何实现上述目标。有人可以帮我吗?
答案 0 :(得分:2)
如果您有sites
的可迭代项,您想map
,并且希望将相同的search_term
和pages
参数传递给每个调用。您可以使用zip
创建一个返回3个元素的元组的可迭代对象,其中第一个是站点列表,第二个和第三个是其他参数,只需重复使用itertools.repeat
def func(site, search_term, pages):
...
from functools import partial
from itertools import repeat
executor.map(func, zip(sites, repeat(search_term), repeat(pages)))