【发布时间】:2014-05-09 23:05:19
【问题描述】:
我用 python 写了一个脚本,这让我很惊讶。 基本上,它需要五个 20 位数字,将它们相乘,然后将它们提高到 3000 的幂。timeit 模块用于查找计算计算所需的时间。好吧,当我运行这个脚本时,它说计算它需要 3*10^-7 秒。 然后它会生成一个文件 output.txt,但脚本直到大约 15 秒后才结束。
import timeit
outputFile = open("output.txt", "w")
start = timeit.default_timer()
x = (87459837581209463928*23745987364728194857*27385647593847564738*10293769154925693856*12345678901234567891)**3000
stop = timeit.default_timer()
time = stop-start
print "Time taken for the calculation was {} seconds".format(time)
outputFile.writelines(str(x))
outputFile.close()
y = raw_input("Press enter to exit.")
这是否意味着打印一个 280kb 的文件实际上比执行计算需要更长的时间?(我觉得不太可能。)
如果不是这样,那么当调用变量 x 时,python 会执行计算吗?是每次计算变量时都执行计算,还是将实际值存储在变量中?
我刚刚编写了另一个脚本,它确认 python 将结果写入 .txt 文件需要 0.03 秒。那么,为什么 python 后面会执行计算呢?
【问题讨论】:
-
I/O 操作(如打印)通常比大多数计算慢。
-
特别是当您打印的是一个大约 300,000 位长的数字时。
-
280kb?噗,这没什么吧?嗯,是的。实际上很多。
-
你可以尝试同样的事情,只是打印到 IDLE 控制台。如果您注释掉打印行并比较速度,很明显问题出在打印而不是计算。这是python世界中一个众所周知的问题。如果 IDLE 控制台中包含大量文本,它有时也会减慢计算机的其他任务。
标签: python performance variables numerical-computing