Python-等待变量更改


问题内容

我有一个Python脚本,它打开了Twitter
API的websocket,然后等待。当通过amq将事件传递给脚本时,我需要打开一个新的websocket连接,并在注册新连接后 立即
关闭旧的websocket连接。

看起来像这样:

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)

但这似乎有点混乱。有谁知道实现这一目标的更好方法?


问题答案:

繁忙的循环不是正确的方法,因为它显然浪费了CPU。有一些线程构造可让您传达此类事件。参见例如:http : //docs.python.org/library/threading.html#event-
objects