【发布时间】:2016-07-18 13:14:14
【问题描述】:
最近我在 Stack Overflow (Python) 上冲浪,看到 this post Aaron Hall 声称
不断运行 while 循环会消耗大量处理能力。添加睡眠时间(即使只有一秒钟)可以大大减少这种使用。
这是真的吗?如果是这样,怎么会?相同的规则是否也适用于其他编程语言(即 C++)?
【问题讨论】:
-
在循环中添加睡眠通常意味着程序逻辑存在问题,但它确实有助于糟糕的代码。
-
如果你想让程序在等待中断的同时永远运行怎么办?有更好的选择吗?
-
如果 while 循环只是为了等待一些外部事件,则需要用某种旨在等待事件的多线程工具来替换它。如果它正在轮询磁盘以查找文件,那么 sleep then check 可能是最好的选择。但是简单地通过诸如 while (true) 之类的实际 cpu 指令是等待事件的最糟糕的方式。有没有更好的方法...取决于您正在等待的事件是什么。
-
如果您正在等待中断,您的等待调用应该是阻塞的,这意味着您的执行线程在阻塞调用返回之前不会继续执行(消耗 CPU)。请参阅有关此主题的阻塞 I/O。
-
我刚刚阅读了链接的问题。他正在等待的事件实际上是经过指定的时间,这正是 time.sleep 应该做的。