【发布时间】:2015-09-11 12:46:03
【问题描述】:
我只是想在 Python 中实现一个简单的观察者模式,但遇到了一个问题。这是我的代码:
class Observable:
def __init__(self):
self.__observers = []
def register_observer(self, observer):
self.__observers.append(observer)
def notify_observers(self, data):
for observer in self.__observers:
observer.notify(self, data)
class Observer:
def __init__(self, observable):
observable.register_observer(self)
self.data_present = False
self.data = ''
def notify(self, observable, data):
self.data_present = True
self.data = data
def wait(self):
while True:
if not self.data_present:
time.sleep(5)
else:
break
return self.data
在这里,我想消除 Observer.wait() 中的忙碌等待(行 time.sleep(5)。我怎样才能向这个函数发出信号?
【问题讨论】:
-
这不是你可以使用 asyncio 的地方吗?
-
查看
asyncio模块的示例。特别是,您可能想要使用coroutines。 -
@Evert,我希望我的观察者是同步的,并在他们继续执行之前等待消息发布。
标签: python observer-pattern busy-waiting