5

可能重复:
Python 3 的事件循环实现?

我正在尝试在 python2.7 中实现事件循环。我希望能够根据时间事件触发事件,并作为另一个动作发生的结果。

我知道我可以利用select做类似的事情。

这是正确的前进方式还是我错过了更好的方式?

4

1 回答 1

11

事件循环是处理/处理事件的循环。

事件是系统中发生的某些代码部分可能感兴趣的事情。

一开始,所有组件都会注册事件,然后触发一个 init 事件:

我只是在这里提供原始代码:

listeners = [component1, component2, component3]
eventqueue.add(InitEvent())
while True:
    event = eventqueue.pop()
    for listener in listeners:
        listener.handle_event(event)

an 如何eventqueue实现以及Event()类层次结构是什么样的留给读者练习。注意使用threading.(R)Locks 等.pop()方法。

此外,您可以为每种事件类型设置单独的侦听器列表。因此,一个事件可以通过调用它(或其.fire()方法)来“触发”,并具有一种机制来识别它自己和父级的所有侦听器,以便通知他们有关事件的信息。

在任何情况下,听众可以根据事件自行决定如何处理。

于 2012-10-25T08:32:43.710 回答