这个问题可能是重复的。但是,我在这个话题上读了很多东西,但没有找到与我的情况相符的东西-至少,我不理解。
不便之处,敬请原谅。
我想做的是相当普遍的,将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()
Run Code Online (Sandbox Code Playgroud)
我以为starmap()将解压缩字典并将其作为关键字args传递给compute(),但是查看源代码(另请参见l.46),它仅发送键(或值?)。
因此它提出了:
TypeError: compute() takes 1 positional argument but 3 were given
Run Code Online (Sandbox Code Playgroud)
它必须是一种清晰,直接的方法来进行此操作。任何帮助将不胜感激。
这是一个非常类似的问题:Python多重处理-如何将kwargs传递给函数?