2012-10-25 20 views
5
yılında

Olası Çoğalt: Ne python2.7 bir olay döngü uygulamak çalışıyorum
Event loop implementation for Python 3?Temel Olay Döngü Python

. Olayları bir zaman olayına göre ve başka bir eylemin sonucu olarak tetikleyebilmeyi isterim.

Buna benzer bir şey yapmak için select'dan yararlanabilirim.

Bu doğru yol mu? Yoksa eksik olduğum daha iyi bir yol var mı?

+0

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

+0

Daha fazla bağlam belirtmeniz gerekir. Sistem programlama, soket programlama, ayrık olay simülasyonu hakkında mı konuşuyorsunuz? –

cevap

10

Bir olay döngüsü, olayları işleyen/ele alan bir döngüdür. .

bir olay bazı kod parçaları ilginizi çekebilir sistemde meydana şeydir başında

, tüm bileşenlerin etkinlikler için kayıt ve bundan sonra, init olay tetiklenir:

Ben sadece burada ham kod sağlayarak: bir eventqueue uygulanma biçimi

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

ve hangi Event() sınıf hiyerarşisi okuyucuya alıştırma olarak bırakılmıştır benziyor. .pop() yöntemi için threading.(R)Lock s vb. Kullanırken dikkatli olun. Ayrıca, her olay türü için ayrı dinleyici listeleriniz olabilir. Bir olay, yalnızca (veya onun .fire() yöntemiyle) çağrılarak "kovulur" ve olay hakkında onları bilgilendirmek için kendi ve ebeveynlerinin tüm dinleyicilerini tanımlayacak bir mekanizmaya sahip olabilir. Her durumda, dinleyiciler bundan sonra ne yapacaklarına ve olaya göre karar verebileceklerdir.