我有一个字符串列表,我想将这些列表元素存储到适当的存储桶中。

def bucketElements(i):
    global buckA, buckB, buckC
    if i.startswith('A'):
        buckA.add(i)
    elif i.startswith('B'):
        buckB.add(i)
    elif i.startswith('C'):
        buckC.add(i)


现在,我想为List中的每个元素并行调用此方法。像这样

buckA,buckB, buckC = set(), set(), set()
pool = multiprocessing.Pool(processes=10)
pool.map(bucketElements, buckList)


由于我正在更新函数中的全局变量,因此无法使用多重处理。无论如何,我可以改善我的处理程序吗?目前我这样称呼它,

buckA,buckB, buckC = set(), set(), set()
for i in buckList:
    bucketElements(i)

最佳答案

您有3个选择:


Queue()
Manager.Value()
Manager.list()


Python»文档:multiprocessing.html#managers

10-07 19:01
查看更多