首页 > 解决方案 > 使用列表中的 kwargs 多次调用函数 [python]

问题描述

我需要定义这个函数,还是它已经存在于 python 中?我想这与map有关,但我想传入一个dicts列表,在调用函数时得到**扩展,而不是直接传入,并且我的搜索结果被一般kwargs的东西劫持。

def doublestarmap(fn, kwargs_list):
    '''run function fn for each kwargs in kwargs_list'''
    return [fn(**kwargs) for kwargs in kwargs_list]

具体来说,我希望这是一个函数,以便我可以在单独的线程中调用它。

def foo(a, b):
    print(a, b)


kwargs_list = [
    dict(a=1, b=2),
    dict(a=10, b=20),
    dict(a=100, b=200),
]
doublestarmap(foo, kwargs_list)  # sanity check
thread = threading.Thread(
    target=doublestarmap,
    kwargs=dict(fn=foo, kwargs_list=kwargs_list),
)
thread.start()

关于在线程中运行的最后一点是关键。我希望能够发送一个 kwargs 列表和一个函数到一个线程,并且它使用每个 kwargs dict 一个接一个地运行该函数。我上面的代码工作正常。我只是不想用我自己的doublestarmap函数重新发明轮子,如果有一种更 Pythonic 的方式来做到这一点。

标签: pythonfilterkeyword-argument

解决方案


推荐阅读