В Python 3.7 я хотел бы создать экземпляр и поделиться и обновить между двумя процессами.Я пробовал multiprocessing.manager, но обнаружил, что атрибуты общего экземпляра не обновляются.Я искал много тем, но не нашел эффективного решения.Пример кода прилагается следующим образом.
class test(object):
def __init__(self):
self.data = [2,3,4]
def run(self):
while self.data[-1] < 10:
#update the data every 1 seconds with 1 increment
time.sleep(1)
self.data.append(self.data[-1]+1)
print(self.data)
class TestProxy(NamespaceProxy):
# We need to expose the same __dunder__ methods as NamespaceProxy,
# in addition to the b method.
_exposed_ = ('__getattribute__', '__setattr__', '__delattr__', 'b')
def b(self):
callmethod = object.__getattribute__(self, '_callmethod')
return callmethod('b')
if __name__ == '__main__':
BaseManager.register('test',test,TestProxy)
manager = BaseManager()
manager.start()
inst = manager.test()
inst.run()
print ('The actual instance data is ...............')
print(inst.data)
Вывод на консоль следующий:
[2, 3, 4, 5]
[2, 3, 4, 5, 6]
[2, 3, 4, 5, 6, 7]
[2, 3, 4, 5, 6, 7, 8]
[2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9, 10]
The actual inst data is ...............
[2, 3, 4] #I expect to see [2, 3, 4, 5, 6, 7, 8, 9, 10]
Мне интересно, почему экземпляр атрибута inst не обновляется.Есть ли простой способ изменить код, чтобы заставить код работать?