Я хочу go через l oop и обновить dict и установить внутри класса, используя функцию. Если я прав, Multiprocessing.Manager мне не поможет, потому что он только объединяет результат в конце.
Я написал игрушечный пример, чтобы понять, как он работает.
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()}
Так что, когда я запускаю этот код с помощью пула, он выводит пустой dict и set, а с ThreadPool он использует только 1 процессор, но выведите все правильно. Что я могу сделать, чтобы использовать несколько процессоров для обновления и проверки объектов класса?