2012-10-25 41 views
5

Powiel możliwe:
Event loop implementation for Python 3?Podstawowe pętli zdarzeń w Pythonie

Próbuję zaimplementować pętlę zdarzeń w python2.7. Chciałbym móc uruchamiać wydarzenia na podstawie wydarzenia w czasie i w wyniku innej akcji.

Rozumiem, że mogę skorzystać z select, aby zrobić coś podobnego do tego.

Czy to właściwa droga naprzód, czy jest lepszy sposób, którego mi brakuje?

+0

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

+0

Musisz podać więcej kontekstu. Czy mówisz o programowaniu systemu, programowaniu gniazd, symulacji zdarzeń dyskretnych? –

Odpowiedz

10

Pętla zdarzeń to pętla, która obsługuje/zajmuje się zdarzeniami. .

Zdarzenie to coś, co pojawia się w systemie, w którym niektóre części kodu może być zainteresowany w

Na początku wszystkie komponenty zarejestrować na imprezy, a po tym, zdarzenie init opalane:

ja po prostu dostarczanie surowca kod tutaj:

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

w jaki sposób eventqueue jest realizowany i jakie hierarchia Event() klasa wygląda pozostawiamy jako ćwiczenie dla czytelnika. Zwróć uwagę na użycie metody threading.(R)Lock itp. Dla metody .pop().

Dodatkowo, możesz mieć osobne listy detektorów dla każdego typu zdarzenia. Zdarzenie może więc zostać "zwolnione" przez wywołanie go (lub jego metody .fire()) i posiadać mechanizm identyfikujący wszystkich własnych i rodzicielskich słuchaczy w celu poinformowania ich o zdarzeniu.

W każdym przypadku słuchacze mogą wtedy samodzielnie zdecydować, co zrobić i zgodnie z wydarzeniem.