在循环中使用 sleep() 可以很好吗?
Is it ok to use sleep() in a loop to be nice?
我无法更好地描述这个问题。
这是来自 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 :)
我认为这种编码风格(循环休眠)不是很好,但是这个库让我除了使用这种风格别无选择。 (至少他们是这样建议的)
可以一起生活吗?
是的,没关系,如果图书馆不提供替代方案。
忙着等待不睡觉很邪恶,因为它占用了大量的CPU时间
忙等待睡觉不是很优雅,但是CPU负载几乎可以忽略不计
这下不用睡觉了! 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, which will block until the next message arrives. Actually, its usage is explained on the project's Github page。它就像任何其他迭代器一样使用:
for message in p.listen():
# do something with the message
我无法更好地描述这个问题。
这是来自 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 :)
我认为这种编码风格(循环休眠)不是很好,但是这个库让我除了使用这种风格别无选择。 (至少他们是这样建议的)
可以一起生活吗?
是的,没关系,如果图书馆不提供替代方案。
忙着等待不睡觉很邪恶,因为它占用了大量的CPU时间
忙等待睡觉不是很优雅,但是CPU负载几乎可以忽略不计
这下不用睡觉了! 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, which will block until the next message arrives. Actually, its usage is explained on the project's Github page。它就像任何其他迭代器一样使用:
for message in p.listen():
# do something with the message