可能重复:
Python 3 的事件循环实现?
我正在尝试在 python2.7 中实现事件循环。我希望能够根据时间事件触发事件,并作为另一个动作发生的结果。
我知道我可以利用select
做类似的事情。
这是正确的前进方式还是我错过了更好的方式?
可能重复:
Python 3 的事件循环实现?
我正在尝试在 python2.7 中实现事件循环。我希望能够根据时间事件触发事件,并作为另一个动作发生的结果。
我知道我可以利用select
做类似的事情。
这是正确的前进方式还是我错过了更好的方式?
事件循环是处理/处理事件的循环。
事件是系统中发生的某些代码部分可能感兴趣的事情。
一开始,所有组件都会注册事件,然后触发一个 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)Lock
s 等.pop()
方法。
此外,您可以为每种事件类型设置单独的侦听器列表。因此,一个事件可以通过调用它(或其.fire()
方法)来“触发”,并具有一种机制来识别它自己和父级的所有侦听器,以便通知他们有关事件的信息。
在任何情况下,听众可以根据事件自行决定如何处理。