如何在python关键字参数上使用executor.map函数

时间:2019-12-29 14:43:28

标签: python python-3.x

我遇到一种情况,我需要并行运行该函数以获取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]))

我不知道如何实现上述目标。有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

如果您有sites的可迭代项,您想map,并且希望将相同的search_termpages参数传递给每个调用。您可以使用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)))