Python EventManager: 使用线程监听和处理事件
使用 Python 创建 EventManager
本文将介绍如何使用 Python 创建一个 EventManager 类,该类使用独立线程监听和处理各种事件。EventManager 提供了以下功能:
- 添加事件监听器 (AddEventListener)
- 触发事件 (AddEvent)
- 在独立线程中处理事件
EventManager 类实现
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。
代码解析
AddEventListener方法用于添加事件监听器,它接受事件名称和回调函数作为参数。AddEvent方法用于触发事件,它接受事件名称和可选的事件数据作为参数。_process_events方法是一个私有方法,它在独立线程中运行,负责处理事件队列中的事件。start方法用于启动 EventManager,它创建并启动一个新的线程来运行_process_events方法。
总结
通过使用 EventManager 类,我们可以轻松地使用独立线程监听和处理各种事件。这使得我们的代码更加模块化和可维护,并且能够更好地管理异步操作。
原文地址: https://www.cveoy.top/t/topic/qCyb 著作权归作者所有。请勿转载和采集!