gpt4 book ai didi

python - 在 Python 中使用 Pool 时将 kwargs 传递给 starmap

转载 作者:行者123 更新时间:2023-11-28 17:13:34 29 4
gpt4 key购买 nike

我正在使用 Pool 对我的程序进行多线程处理,使用 starmap 来传递参数。

我被卡住了,因为我似乎无法找到一种方法来传递 kwargs 以及我在 starmap 函数中传递的 zip 数组。

pool = Pool(NO_OF_PROCESSES)
branches = pool.starmap(fetch_api, zip(repeat(project_name), api_extensions))

分支请求不完整,因为我仍然无法弄清楚如何传递关键字参数。

def fetch_api(project_name, api_extension, payload={}, headers={}, API_LINK=API_LINK, key=False):
headers[AUTH_STRING] = 'Gogo'
call_api = API_LINK + project_name + api_extension
response_api = requests.get(call_api, headers=headers, params=payload)

if key: return project_name + ':' + response_api
else: return response_api

从分支线调用 fetch_api() 时,我想将有效负载作为 {'a':1} 和 key=True 传递。

请指导我的方向或答案。谢谢。使用 Python 3.3+。

最佳答案

您可以围绕 pool.starmap 创建一个包装器,它也接受一个 over kwargs 字典的迭代器。

from itertools import repeat

def starmap_with_kwargs(pool, fn, args_iter, kwargs_iter):
args_for_starmap = zip(repeat(fn), args_iter, kwargs_iter)
return pool.starmap(apply_args_and_kwargs, args_for_starmap)

def apply_args_and_kwargs(fn, args, kwargs):
return fn(*args, **kwargs)

然后你可以在你的情况下称它为:

args_iter = zip(repeat(project_name), api_extensions)
kwargs_iter = repeat(dict(payload={'a': 1}, key=True))
branches = starmap_with_kwargs(pool, fetch_api, args_iter, kwargs_iter)

关于python - 在 Python 中使用 Pool 时将 kwargs 传递给 starmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718523/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com