2011-07-25 91 views
2

有沒有人知道可用於Python 3的事件循環庫(或綁定)?沒關係,如果它只是UNIX系統,儘管我更喜歡Windows的東西。Python 3的事件循環實現?

ETA:我意識到編寫一個事件循環系統並不是非常困難。但是,我不想重新發明輪子(我們仍然鼓勵這些日子不這樣做,對吧?;-))

這是計劃用於服務器應用程序,所以顯然我想要的東西不是'綁定到一個GUI小部件工具包或其他東西。

如果答案是「沒有,沒有一個」(可能;我確定,因爲heck找不到一個),那麼我很可能會爲libev創建一個Python 3的綁定。

+0

事件循環是微不足道的。你有什麼要求嗎? –

+0

高性能。理想情況下,像libev;我意識到我可以爲系統編寫自己的基於fd的事件循環,但我寧願不要重新發明輪子;有幾種實現。它似乎只有極少數具有Python 3的綁定。 –

+0

一個簡單的'while True:'循環將是高性能。你真的不能高得多。如果你想要其他的東西,比如多線程,或者通過網絡發送事件等等,它只會變得複雜。你也可能想要掛鉤系統事件,在這種情況下你需要支持它,這不是微不足道的。對於「高性能事件循環」,您只需要一個「while True:」。 –

回答

6

我建議是這樣的:

while True: 
    while queue: 
     queue.pop()() 

對於工作,但是,你需要有事件系統把可贖回事件到隊列中。

(如果您更感興趣的是一個特定結合特定框架,比如GTK,Qt的,wxWidgets的,Ncurses的,可可的WinForms,不管,那麼說!)。

+0

不是一個真正的具體的,只是一個已經存在了一段時間,具有優良的性能,和支持所有正常的鈴聲和哨聲(文件描述符,信號等);如果沒有別的東西,我可以爲libev創建一個python3的包裝器。我當然不想重新發明千萬次。 –

+0

對於這個特定的事件系統,我可能會調查http://code.google.com/p/pyev/ - 他們對該項目的變更控制系統似乎不時提到python3。 – Arafangion

+0

哦,我很傻。我看到了這個項目;我以某種方式設法錯過了他們擁有Python 3的支持。最優秀的。也許這就是爲什麼我不應該在凌晨的時候發佈問題......!謝謝! –