Clo*_*own 0 python time sleep python-3.x
我想知道time.sleep(5)下面这段代码之间有什么区别:
import time
start_time = time.time()
while True:
    if time.time() - start_time > 5:
        break
print("Five seconds passed")
而且,使用第一种或第二种解决方案更好吗?可能,while像我一样使用循环并不是一个好的解决方案。
谢谢指教。
该while True循环称为Busy Wait [Wikipedia],因为它将保持处理器运行。这可能会使 1 个核心保持 100%。
Atime.sleep()是空闲等待,因为处理器无关。如果没有被其他东西使用,您的 CPU 将处于 0%。
现在,事情会变得困难,如果你想完全理解它,它可能取决于操作系统。
如果不改变,Windows 中的线程调度发生在 1/64 秒。无论您的程序做什么,它的精度都可能是 1/64 秒,因为这是 Windows 唤醒线程的时间间隔。
保持 CPU 忙碌将使线程优先级保持不变甚至降低。
保持 CPU 忙碌会使它变热。CPU 不喜欢热量,它们实际上可能会减慢或至少停止TurboBoost(或类似的 CPU 功能)
保持 CPU 空闲会增加线程优先级。它将使用同步对象并调用WaitForSingleObject() [MSDN],从而将 CPU 返回给操作系统。
实际会发生什么或哪种方法更精确是很难预测的。要完全了解 Windows 上发生的事情,请阅读有关进程和线程的Windows Internals 书 [Amazon]第 1 部分。
| 归档时间: | 
 | 
| 查看次数: | 32 次 | 
| 最近记录: |