【问题标题】:Shared memory parallel processing in pythonpython中的共享内存并行处理
【发布时间】:2017-06-22 12:39:25
【问题描述】:

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

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)

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

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)

【问题讨论】:

  • buckList的内容是什么?
  • 对不起,我提到的整数列表不好,它实际上是字符串列表 buckList = ['Adasdas', 'Asdsd', 'Xsadsad', 'Ssdsd', 'Bdasdsds']

标签: python multithreading python-2.7 python-multiprocessing


【解决方案1】:

您有 3 个选项:

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

Python » 文档:multiprocessing.html#managers

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-15
    • 2013-08-19
    • 2012-12-16
    • 2012-07-19
    • 2016-12-27
    • 2021-12-27
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多