我无法更好地描述这个问题。
这是来自redis-py github页面。
>>> while True:
>>> message = p.get_message()
>>> if message:
>>> # do something with the message
>>> time.sleep(0.001) # be nice to the system :)
我认为这种编码风格(在一个循环中睡觉)并不是很好,但这个库让我别无选择,只能使用这种风格。 (至少他们这样建议)
这可以忍受吗?
答案 0 :(得分:5)
在这种情况下无需睡觉! The docstring for get_message
表示您可以指定timeout
参数,该函数将在返回前等待timeout
秒。
while True:
message = p.get_message(timeout=0.1) # or however long you'd want to wait
if message:
# do something with the message
如果您不坚持使用get_message
,则会有listen
method,它会在下一条消息到达之前阻止。实际上,它的用法在您发布的代码示例下面的project's Github page上进行了解释。它只是像任何其他迭代器一样使用:
for message in p.listen():
# do something with the message
答案 1 :(得分:2)
是的,没关系,如果图书馆没有提供替代。
忙着等待没有睡觉是非常邪恶的,因为它占用了大量的CPU时间。
忙着等待睡觉不是很优雅,但CPU负载几乎总是可以忽略不计。