如何使用python多处理来正确更新dict和set?
我想使用函数遍历循环并更新dict和set。如果我是正确的,Multiprocessing.Manager将不会帮助我,因为它只会在最后合并结果 我写了一个玩具exmaple来了解它是如何工作的如何使用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 =
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上加入队列操作序列还是什么?