在真正的循环中添加短暂睡眠有什么意义?

时间:2016-06-12 18:12:36

标签: python loops

在互联网上,我看到了几个处理服务的例子,它等待来自客户的无限循环消息,包括短暂的睡眠。例如:

while True:
    check_messages_stack()
    sleep(0.1)

那里的睡眠有什么意义?它应该节省资源吗?如果它确实节省了一些资源,它会是一个有意义的数量吗?

4 个答案:

答案 0 :(得分:1)

sleep就像其他人所说的那样放松了CPU使用率,但另外如果它类似于访问网络/网络数据,则需要睡眠以防止主机服务器崩溃并禁止你。

答案 1 :(得分:1)

当您的PC运行时,您的CPU需要执行大量过程(以使您的PC运行)。 由于CPU速度非常快,他们可以假装同时执行多项任务,但他们并没有真正做到(现在我们得到了多核CPU和多线程,但是忘掉了这个解释)。 他们只是在一定时间内执行某个流程的某个部分,然后其他流程的一部分返回到第一个流程,依此类推。

以一种简单的方式,当CPU正在运行时,允许切换到一个进程到另一个进程,例如当进程执行某些I / O或等待用户交互时。

执行while true时,它将完成循环,完成后执行while循环中的函数。这里ASAP真的意味着ASAP,所以没有其他过程能够在两个循环之间做任何事情。因为CPU正在不断处理。

当您放置sleep时,您允许CPU让其他进程执行。由于随机CPU可以在一微秒内完成数十亿次操作,因此没有真正的睡眠时间。

所以在你的问题中,sleep(0.1)允许你的CPU在两次check_messages_stack()调用之间执行somme bilions操作。

有关详细信息,请查找" CPU Scheduling"。

答案 2 :(得分:0)

sleep不使用CPU资源,但是不断执行check_messages_stack()可能(取决于你所拥有的),所以如果你不需要经常执行它,那么给CPU带来是个好习惯休息一段时间。

答案 3 :(得分:0)

如果函数没有等待任何东西,它将消耗100%的CPU,通过添加该睡眠,它给CPU一些时间来执行其他进程