Основной цикл событий в 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() метод) и иметь механизм для идентификации всех своих и родительских слушателей, чтобы сообщить им о событии.

В любом случае, слушатели могут сами решить, что делать с событием и в соответствии с ним.

Другие вопросы по тегам