все. У меня есть некоторые проблемы с многопроцессорностью в python. Как видите, я определил два класса, включая одно имя функции «add», которое увеличивает значение «a» на два.
class t1:
def __init__(self):
self.a = 0
class t2:
def __init__(self):
self.b = 0
def add(self, t1):
t1.a += 2
print("adding")
, когда я создаю по одному экземпляру для каждого из классов и запускаю «add» Функция, как это, все в порядке.
temp1 = t1()
temp2 = t2()
for i in range(0, 10):
temp2.add(temp1)
print(temp1.a)
эта часть кода показывает 20 в качестве значения "temp1.a", что полностью верно. Но проблема в том, что когда я хочу запустить приведенный выше код с использованием многопроцессорной обработки, он дает мне совершенно другой вывод.
temp1 = t1()
temp2 = t2()
processes = []
for i in range(0, 10):
p = multiprocessing.Process(target=temp2.add, args=(temp1,))
p.start()
processes.append(p)
for process in processes:
process.join()
print(temp1.a)
, несмотря на то, что он запускает функцию «add» десять раз, но он дает мне 0 в качестве вывода. В чем причина этой проблемы и как я могу это исправить?