import redis
import threading
class Listener(threading.Thread):
def __init__(self, r, channel):
threading.Thread.__init__(self)
self.redis = r
self.pubsub = self.redis.pubsub()
self.pubsub.subscribe(channel)
def run(self):
for item in self.pubsub.listen():
# do stuff
pass在上面的代码中,我如何停止线程?
下面我有一个示例代码来向您展示我想要的内容:
class Listener(threading.Thread):
def __init__(self, r, channel):
threading.Thread.__init__(self)
self.redis = r
self.pubsub = self.redis.pubsub()
self.pubsub.subscribe(channel)
self.stop = False
def run(self):
while not stop:
# get item from channel因此,当属性停止== True时,线程将退出循环并完成。这有可能吗?如果不是的话,还有什么可供选择的?
发布于 2014-01-08 23:32:18
有一个有用的要点,它展示了如何传递将中断循环和取消订阅的命令。这可能是有用的,看看你如何可以以其他方式。
for item in self.pubsub.listen():
if item['data'] == "KILL":
self.pubsub.unsubscribe()
print self, "unsubscribed and finished"
break
else:
self.work(item)您可以在这里看到示例代码:
https://stackoverflow.com/questions/20175671
复制相似问题