Можно ли запустить тот же экземпляр в al oop, используя multiprocessing.Process? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть метод класса, который я хочу запускать параллельно. После создания экземпляра класса я хотел бы запускать тот же экземпляр в 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...