Использую Python 3.6 и столкнулся с интересной проблемой:
Допустим у нас есть класс и какой-то словарь, при его инициализации в этот словарь записывается какое-то значение
class test:
test_dictionary = {}
def __init__(self, name):
self.test_dictionary[name] = [1,2]
Далее при инициализации запускается дочерний процесс multiprocessing
import multiprocessing as mp
import time
class test:
test_dictionary = {}
def __init__(self, name):
self.test_dictionary[name] = [1, 2]
mp.Process(target=self.change_value1, args=(name, 3, 4)).start()
def change_value1(self, name, new_value1, new_value2):
mp.Process(target=self.change_value2, args=(name, new_value1, new_value2)).start() # на экране [1, 2] => [3, 4]
time.sleep(1)
mp.Process(target=self.change_value2, args=(name, new_value1*2, new_value2*2)).start() # на экране [1, 2] => [6, 8]
def change_value2(self, name, new_value1, new_value2):
print(self.test_dictionary[name])
self.test_dictionary[name] = [new_value1, new_value2]
print(self.test_dictionary[name])
Почему при изменении аргументов класса в дочернем процессе изменения не сохраняются? После завершения работы процесса они возвращаются к значениям по-умолчанию. Класс привёл в качестве примера.
P.S. Имеется в виду что значения, почему-то, изменяются лишь локально, хотя это ведь метод класса.