PyRo и Python
Я использую PyRo в моей программе на Python. И у меня есть проблема. класс B: в callFromProxy выведите 0, но в callfun выведите правильное значение = 10. Почему? Как исправить?
class A(Pyro.core.ObjBase):
# set link to item class B
def set(self, real_B):
self.item_B = real_B
# call function callfun in item_B
def callfun(self):
self.item_B.callfun(10)
class B(Pyro.core.ObjBase):
# init class B
def __init__(self):
self.elements = {"name":0}
# set proxy to item class A
def set(self, proxyA):
self.proxyA = proxyA
# print
def printvalue(self):
print self.elements["name"]
# call from proxy
def callFromProxy(self):
self.proxyA.callfun()
self.printvalue() # this is not print 10, print 0
# call function
def callfun(self, value):
self.elements["name"] = value
self.printvalue() # but this is print 10
itemA = A()
# proxyA connect from PyRo to itemA
itemB = B()
itemB.set(itemA)
itemA.set(itemB)
itemB.callFromProxy() # this is not print 10
1 ответ
Я считаю (и поправьте меня, если я ошибаюсь) PyRo использует асинхронные вызовы, по крайней мере по умолчанию.
Поэтому, когда вы звоните callFromProxy
, printvalue
может быть казнен раньше callfun
на itemB
потому что требуется время, чтобы позвонить A.callfun
а также B.callfun
, Если / когда это произойдет, elements["name"]
все равно будет 0, когда printvalue
вызывается впервые.