下面是一个简单的 EventManager 的实现,包括了 AddEventListenerAddEvent 方法:

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

请用 Python 写一个 EventManager该EventManager将启动独立thread并监听各种事件请添加如AddEventListener与AddEvent的方法

原文地址: http://www.cveoy.top/t/topic/iWwm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录