【发布时间】:2014-06-14 04:47:20
【问题描述】:
编辑:我正在完全重做这个问题。该问题与 time.time() 无关
这是一个程序:
import time
start=time.time()
a=9<<(1<<26) # The line that makes it take a while
print(time.time()-start)
这个程序,当保存为文件并在 Python 3.4 中以 IDLE 运行时,大约需要 10 秒,即使从time.time() 打印出 0.0 也是如此。 IDLE 的问题非常明显,因为从命令行运行该程序几乎不需要任何时间。
senshin 发现的另一个具有相同效果的程序是:
def f():
a = 9<<(1<<26)
我已经确认,当在 Python 2.7 IDLE 中或从 python 2.7 或 3.4 的命令行运行时,这个相同的程序几乎是瞬时的。
那么 Python 3.4 IDLE 做了什么让它花这么长时间?我知道计算这个数字并将其保存到内存中是磁盘密集型的,但我想知道的是为什么 Python 3.4 IDLE 执行此计算并编写,而 Python 2.7 IDLE 和命令行 Python 大概不这样做。
【问题讨论】:
-
对我来说不需要 10 秒,事实上它对我来说就像预期的那样工作
-
@isaacg 为什么您认为该程序需要大约 10 秒?像这样的简单程序几乎不需要运行时间——例如,在我的 2.7GHz mac mini 上,“time python isaacg.py”报告它需要大约 0.028 秒才能运行。
-
你试过从终端运行这个吗?结果还是一样吗?
-
您可能希望多次运行并取平均值。
-
在文件中自行尝试并从 IDLE 运行:
def f(): a = 9<<(1<<26)。它使我的 IDLE 滞后(即使没有调用该函数);它为你做吗?如果是这样,它可能与 IDLE 预计算常量或类似的奇怪东西有关。
标签: python python-idle python-3.4