python – 为什么时间错误报告这么快的时间?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 为什么时间错误报告这么快的时间?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1358字,纯文字阅读大概需要2分钟。
内容图文
![python – 为什么时间错误报告这么快的时间?](/upload/InfoBanner/zyjiaocheng/759/e635970a31344663b7ee53bb4419799f.jpg)
参见英文答案 > Why does Python “preemptively” hang when trying to calculate a very large number? 2个
我正在玩大数字,并编写以下代码:
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.
解决方法:
python.exe和pythonw.exe在运行之前正在优化代码.似乎2 ** 100000000正在预先计算.这个代码的小编辑:
import time
print("program entered")
def ispow2(n):
return not n & n - 1
start = time.perf_counter()
ispow2(2**100000000)
end = time.perf_counter()
print(end - start)
等待后完全生成以下输出:
program entered
0.01701506924359556
所以程序甚至在大部分等待之后都没有运行.
数据暗示这是2 ** …部分(从命令行运行):
power of two|approximate wait time|reported time
1000000000 | 6 seconds |0.1637752267742188
10000000000 | 62 seconds |1.6400543291627092
在最后一次运行中,输入的程序输出和1.6400543291627092之间有明显的~1.5秒等待.
内容总结
以上是互联网集市为您收集整理的python – 为什么时间错误报告这么快的时间?全部内容,希望文章能够帮你解决python – 为什么时间错误报告这么快的时间?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。