Основной цикл событий в Python
Возможный дубликат:
Реализация цикла событий для Python 3?
Я пытаюсь реализовать цикл обработки событий в python2.7. Я хотел бы иметь возможность инициировать события, основанные на событии времени и в результате другого действия.
Я понимаю, что могу использовать select
сделать что-то похожее на это.
Это правильный путь вперед или есть лучший путь, который мне не хватает?
1 ответ
Цикл событий - это цикл, который обрабатывает события.
Событие - это то, что происходит в системе, где могут интересоваться некоторые части кода.
В начале все компоненты регистрируются на события, а после этого инициируется событие init:
Я просто предоставляю необработанный код здесь:
listeners = [component1, component2, component3]
eventqueue.add(InitEvent())
while True:
event = eventqueue.pop()
for listener in listeners:
listener.handle_event(event)
Как eventqueue
реализуется и что Event()
иерархия классов выглядит как упражнение для читателя. Позаботьтесь об использовании threading.(R)Lock
и т. д. для .pop()
метод.
Кроме того, вы можете иметь отдельные списки слушателей для каждого типа события. Таким образом, событие может быть "запущено", просто вызывая его (или его .fire()
метод) и иметь механизм для идентификации всех своих и родительских слушателей, чтобы сообщить им о событии.
В любом случае, слушатели могут сами решить, что делать с событием и в соответствии с ним.