我在玩大数值时,写了以下代码:
import time
def ispow2(n):
return not n & n - 1
start = time.clock()
ispow2(2**100000000)
end = time.clock()
print(end - start)
令人惊讶的是,这输出了0.016864107385627148
,时间非常短。但实际上,它需要大约8
秒而不是0.02
。
为什么时间模块报告如此快的时间,当明显运行代码需要更长时间呢?
根据
time
,clock()
已经被弃用,因此我将其替换为 process_time()
。我得到了几乎相同的结果。perf_counter()
也是如此。
注意:这是从IDLE运行的。当我从命令行运行时,时间似乎被准确报告了。也许pythonw.exe与此有关,但是为什么呢?
然而,当我在
2**10...
末尾添加另一个0
时,在命令行上需要大约7秒钟,但报告的是0.1781140373572865
。
from timeit import default_timer as timer
:它会选择适合您平台和Python版本的最佳计时器。 - jfs