请用 Python 写一个 EventManager该EventManager将启动独立thread并监听各种事件请添加如AddEventListener与AddEvent的方法
下面是一个简单的 EventManager 的实现,包括了 AddEventListener 和 AddEvent 方法:
import threading
import time
class EventManager:
def __init__(self):
self.event_listeners = {}
self.event_queue = []
self.lock = threading.Lock()
def AddEventListener(self, event_name, callback):
with self.lock:
if event_name not in self.event_listeners:
self.event_listeners[event_name] = []
self.event_listeners[event_name].append(callback)
def AddEvent(self, event_name, data=None):
with self.lock:
self.event_queue.append((event_name, data))
def _process_events(self):
while True:
with self.lock:
if not self.event_queue:
time.sleep(0.1)
continue
event_name, data = self.event_queue.pop(0)
if event_name in self.event_listeners:
for callback in self.event_listeners[event_name]:
callback(data)
def start(self):
threading.Thread(target=self._process_events).start()
使用示例:
def event_handler(data):
print("Event received:", data)
def main():
event_manager = EventManager()
event_manager.AddEventListener("event1", event_handler)
event_manager.AddEvent("event1", "Hello World")
event_manager.start()
if __name__ == "__main__":
main()
上述示例中,我们创建了一个 EventManager 对象,并添加了一个名为 "event1" 的事件监听器 event_handler。然后,我们通过 AddEvent 方法触发一个名为 "event1" 的事件,并传递了参数 "Hello World"。最后,我们调用 start 方法启动 EventManager,它将在独立的线程中监听事件,并在事件发生时调用相应的事件处理函数 event_handler
原文地址: http://www.cveoy.top/t/topic/iWwm 著作权归作者所有。请勿转载和采集!