【发布时间】:2015-08-25 19:55:15
【问题描述】:
from math import cos
x = 2
while x != cos(x):
x = cos(x)
print (x)
这是我运行基本级别 2015 mac Air 的代码。我等了大约 30-40 秒,此时我的笔记本电脑开始变成热板。我没有得到答案。这是正常的吗?我不认为运行它会花费那么多精力,尤其是在阅读了人们如何轻松地在他们的 Airs 上同时运行 30 多个标签、Xcode、电影流之后。
如果有帮助,我会使用终端运行它。
规格为 4gb 内存/128gb sdd/i5-5250u(?)
【问题讨论】:
-
繁忙的 CPU 就是热 CPU:工作需要能量,会产生热量。循环永远不会终止并使 CPU 毫无意义地忙碌。运行循环并不是“可怕”;就是这台可怜的笔记本电脑正在推动它的散热范围,试图完成所要求的(尽管没用的)任务。
-
可能会遇到一些浮点问题。
-
在我的 Ubuntu PC 上,这个循环运行了 92 次迭代,然后才找到相等性。但是,所描述的症状是使 CPU 处于忙碌状态的无限循环。
-
IIRC,在CPython中,
math.cos只是调用底层C平台的余弦函数。我希望不同的操作系统有不同的 C 编译器,所以行为不同并不让我感到惊讶。
标签: python macos floating-point