У меня есть метод класса, который я хочу запускать параллельно. После создания экземпляра класса я хотел бы запускать тот же экземпляр в al oop, каждый раз обновляя его инициализированные переменные. Бывает, что каждый раз, когда он зацикливается, создается новый экземпляр. Очень простой пример:
from multiprocessing import Process, Manager
class Increment:
def __init__(self):
self.num = 0
self.upto = 10
def run(self, n, return_dict):
self.num += 1
if self.upto > self.num:
return_dict[n] = self.num
else:
return_dict[n] = self.upto
c = Increment()
print(c.num, c.upto)
Это дает:
0 10
Затем я запускаю l oop:
manager = Manager()
return_dict = manager.dict()
jobs = []
for i in range(12):
job = Process(target=c.run, args=(i, return_dict))
job.start()
jobs.append(job)
job.join()
print(return_dict.values())
Что дает мне следующий результат:
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
то, что я действительно хочу, чтобы он выводил, это следующий результат:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10]
Есть ли какой-нибудь конкретный c способ передать один и тот же экземпляр (здесь изначально экземпляр 'c') и его метод (запуск) в Process при использовании al oop?