使用 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 类,我们可以轻松地使用独立线程监听和处理各种事件。这使得我们的代码更加模块化和可维护,并且能够更好地管理异步操作。

Python EventManager: 使用线程监听和处理事件

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

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