如何使用python多处理来正确更新dict和set?

如何使用python多处理来正确更新dict和set?,python,dictionary,set,python-multiprocessing,shared-memory,Python,Dictionary,Set,Python Multiprocessing,Shared Memory,我想使用函数遍历循环并更新dict和set。如果我是正确的,Multiprocessing.Manager将不会帮助我,因为它只会在最后合并结果 我写了一个玩具exmaple来了解它是如何工作的 import numpy as np from multiprocessing import Pool from multiprocessing.pool import ThreadPool from tqdm import tqdm_notebook class MyClass(): D =

我想使用函数遍历循环并更新dict和set。如果我是正确的,Multiprocessing.Manager将不会帮助我,因为它只会在最后合并结果

我写了一个玩具exmaple来了解它是如何工作的

import numpy as np
from multiprocessing import Pool
from multiprocessing.pool import ThreadPool
from tqdm import tqdm_notebook

class MyClass():
    D = {}
    S = set()
    def func(self, l):
        for i in l:
            if i not in self.D:
                self.D[i] = [i]
            else:
                self.D[i].append(i)
            self.S.add(i)

cl = MyClass()
b = np.random.randint(0, 10, 10**8)
spl_b = np.array_split(b, 15)
pl = ThreadPool(5)
with pl as p:
    list(tqdm_notebook(p.imap(cl.func, spl_b), total = 15))
pl.close()
pl.terminate()}

所以,当我使用Pool运行这个代码时,它会输出空的dict和set,而使用ThreadPool时,它只使用1个cpu,但正确地输出所有内容。如何使用多个CPU更新和检查类对象?

我不太清楚,你在问什么,但你可能想看看
多处理
队列来传递数据。你能告诉我如何将队列和dict结合起来吗?我应该在dict上加入队列操作序列还是什么?