小编Le *_*naw的帖子

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

这个问题可能是重复的。但是,我在这个话题上读了很多东西,但没有找到与我的情况相符的东西-至少,我不理解。

不便之处,敬请原谅。

我想做的是相当普遍的,将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传递给函数?

python pool multiprocessing

5
推荐指数
1
解决办法
958
查看次数

标签 统计

multiprocessing ×1

pool ×1

python ×1