Python - Ожидание изменения переменной - PullRequest
5 голосов
/ 20 октября 2011

У меня есть скрипт Python, который открывает веб-сокет для API Twitter и затем ждет.Когда событие передается в скрипт через amq, мне нужно открыть новое соединение через веб-сокет и немедленно закрыть старое, как только новое соединение будет зарегистрировано.

Это выглядит как-токак это:

stream = TwitterStream()
stream.start()

for message in broker.listen():
    if message:
        new_stream = TwitterStream()
        # need to close the old connection as soon as the 
        # new one connects here somehow
        stream = new_stream()

Я пытаюсь выяснить, как установить «обратный вызов», чтобы уведомить мой сценарий о том, когда будет установлено новое соединение.Класс TwitterStream имеет логическую переменную is_running, на которую я могу сослаться, поэтому я подумал, возможно, что-то вроде:

while not new_stream.is_running:
    time.sleep(1)

Но это выглядит немного грязно.Кто-нибудь знает лучший способ добиться этого?

1 Ответ

6 голосов
/ 20 октября 2011

Занятый цикл не является правильным подходом, поскольку он явно тратит процессор.Есть потоки, которые позволяют вам сообщать о таких событиях.См. Например: http://docs.python.org/library/threading.html#event-objects

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...