2012-10-25 67 views
5

可能重複:
Event loop implementation for Python 3?基本事件循環的Python

我想實現在python2.7事件循環。我希望能夠根據時間事件觸發事件並作爲其他操作發生的結果。

我明白我可以利用select做一些類似的。

這是正確的方式前進或者是有哪些我缺少一個更好的辦法?

+0

http://stackoverflow.com/questions/6812397/event-loop-implementation-for-python-3 – avasal

+0

您需要指定更多的上下文。你在談論系統編程,套接字編程,離散事件模擬嗎? –

回答

10

事件循環是處理/處理事件的循環。 。

一個事件是指發生在系統中的一些代碼部分可能有興趣在

在開始的時候,所有的組件註冊事件,之後,init事件觸發:

我只是提供原始代碼在這裏:

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

怎樣的eventqueue實現,什麼Event()類層次看起來就留給讀者自己練習。 .pop()方法請注意使用threading.(R)Lock等。

此外,你可以有各種事件類型的單獨的偵聽器列表。因此,一個事件可以通過調用它(或其.fire()方法)而被「解僱」,並且具有識別其自己和父母的所有聽衆的機制,以便向他們通知事件。

在任何情況下,聽衆則可以決定自己做什麼用的,並根據事件。