python

时间:2017-06-22 12:39:26

标签: python multithreading python-2.7 python-multiprocessing

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

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)

1 个答案:

答案 0 :(得分:0)

您有3个选项:

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

Python»文档:multiprocessing.html#managers