我有一个函数必须使用大量参数类型运行的情况
# generic function with named parameters
def genericFn(X, y, a_fn ='t', o_fn ='a', l_fn='b', dim=2):
...
return accuracy
我有一个参数类型列表
a_fns = ['t', 's', 'r', 'l']
o_fns = ['s', 'a']
l_fns = ['m', 'h', 'l', 'b', 'k', 'p']
如何将函数的所有可能组合传递到池中
with concurrent.futures.ProcessPoolExecutor() as executor:
results_list = executor.map(genericFn, (combinations of named parameters))
请记住,您需要根据您的需要调整示例。 你可以使用这样的东西:
from functools import partial
class dict_to_kwargs:
def __init__(self, func):
self.func = func
def __call__(self, arg, **kwargs):
return self.func(**kwargs, **arg)
class your_class:
def your_method(self):
result_executor = executor.map(
dict_to_kwargs(
partial(
method_name_to_map,
named_param_1=named_unvariable_param_1_value,
named_param_2=named_unvariable_param_2_value,
named_param_3=named_unvariable_param_3_value,
named_param_4=named_unvariable_param_4_value,
named_param_5=named_unvariable_param_5_value,
)
),
[{"named_param_6": x} for x in named_variable_param_6_values],
)
return list(result_executor) # to return it like a list
“返回一个新的部分对象,调用时其行为类似于 func 使用位置参数 args 和关键字参数调用 关键词。如果向调用提供更多参数,则它们是 附加到args。如果提供了额外的关键字参数,它们 扩展和覆盖关键字。”
希望有帮助😊