I'm just trying to implement a simple Observer pattern in Python and am running into an issue. This is my code:
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
In here, I would like to eliminate the busy waiting in Observer.wait() (the line time.sleep(5). How can I perhaps signal to this function?