gpt4 book ai didi

python - 将 concurrent.futures.ThreadPoolExecuter() 与 kwargs 一起使用

转载 作者:行者123 更新时间:2023-12-02 02:59:58 25 4
gpt4 key购买 nike

如何将 concurrent.futures.ThreadPoolExecuter().map 与包含 kwargs 字典的列表一起使用?

使用只有一个参数的函数,我可以像这样使用执行器:

import concurrent.futures

def one_arg(arg):
print(arg)

arg_list = [1, 2, 3]

with concurrent.futures.ThreadPoolExecutor() as executer:
executer.map(one_arg, arg_list)

output:
1
2
3

现在,让我们来看一个具有多个输入参数的函数:

def some_kwargs(kwarg_1, kwarg_2, kwarg_3):
print('kwarg_1: {} - kwarg_2: {} - kwarg_3: {}'.format(kwarg_1, kwarg_2, kwarg_3))

kwargs = {"kwarg_1": "1_1", "kwarg_2": "1_2", "kwarg_3": "1_3"}
some_kwargs(**kwargs)

output:
'kwarg_1: 1_1 - kwarg_2: 1_2 - kwarg_3: 1_3'

现在,我真正想要的是当我有一个 list 的 kwargs 时,如何使用线程调用 some_kwargs

kwargs_list = [{"kwarg_1": "1_1", "kwarg_2": "1_2", "kwarg_3": "1_3"},
{"kwarg_1": "2_1", "kwarg_2": "2_2", "kwarg_3": "2_3"},
{"kwarg_1": "3_1", "kwarg_2": "3_2", "kwarg_3": "3_3"}]

with concurrent.futures.ThreadPoolExecutor() as executer:
executer.map(some_kwargs, **kwargs_list) # TypeError: map() argument after ** must be a mapping, not list

最佳答案

使用 lambda 函数包装 some_kwargs:

with concurrent.futures.ThreadPoolExecutor() as executer:
executer.map(lambda x: some_kwargs(**x), kwargs_list)

请注意,**kwargs_list 引发了上述 TypeError,因为 kwargs_list 是列表,而不是字典。

关于python - 将 concurrent.futures.ThreadPoolExecuter() 与 kwargs 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60193260/

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