gpt4 book ai didi

Python 多处理 - 将字典列表传递到池

转载 作者:行者123 更新时间:2023-12-03 05:09:09 26 4
gpt4 key购买 nike

这个问题可能是重复的。然而,我读了很多关于这个主题的资料,但没有找到符合我的情况的资料 - 或者至少,我不理解它。

很抱歉给您带来不便。

我想做的事情相当常见,将 kwargs 列表传递给 pool.starmap(),以实现多处理。

这是我的简化案例:

def compute(firstArg, **kwargs): # A function that does things
# Fancy computing stuff...
# Saving to disk...
return True

if __name__ == '__main__':
args = [{
'firstArg': "some data",
'otherArg': "some other data"
'andAnotherArg': x*2
} for x in range(42)]

pool = Pool(4)
pool.starmap(compute, args)
pool.close()
pool.terminate()

我认为 starmap() 会解压字典并将其作为关键字参数传递给compute(),但查看source code (另请参见 l.46),它仅发送键(或值?)。

所以它提出:

TypeError: compute() takes 1 positional argument but 3 were given

这必须是一种清晰、直接的方法...任何帮助将不胜感激。

这是一个非常相似的问题:Python Multiprocessing - How to pass kwargs to function?

最佳答案

您可以使用一个小型代理功能:

def proxy(Dict):
return compute(**Dict)

pool.map(proxy, args)

或者,因为您不需要污染命名空间的 proxy 函数:

pool.map(lambda Dict: compute(**Dict), args)

关于Python 多处理 - 将字典列表传递到池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43957843/

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