繁体   English   中英

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

[英]How to use executor.map function in python on keyword arguments

我遇到了一个场景,我需要为 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]))

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

如果您有要map的可迭代sites ,并且您希望将相同的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)))

这是在executor.map中使用 kwargs 的一种有用方法,只需使用lambda函数通过**kwargs表示法传递**kwargs

from concurrent.futures import ProcessPoolExecutor

def func(arg1, arg2, ...):
    ....
 
items = [
    { 'arg1': 0, 'arg2': 3 },
    { 'arg1': 1, 'arg2': 4 },
    { 'arg1': 2, 'arg2': 5 }
]

with ProcessPoolExecutor() as executor:
    result = executor.map(
        lambda kwargs: func(**kwargs), items)

我用熊猫DataFrames通过创建项目时,发现这个也很有用to_dict通过键入items = df.to_dict(orient='records')或JSON文件加载数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM