我在 python 中输入了这段代码,我的电脑真的很热并且不打印任何东西!但是,当我分配num = 2**10
它时。我怎样才能计算大约。普通计算机运行此代码需要多长时间?代码是:
num = 2**100
cnt = 0
import time
t0 = time.clock()
for i in range(num):
cnt = cnt+1
print(cnt)
t1 = time.clock()
print("running time: ", t1-t0, " sec")
我在 python 中输入了这段代码,我的电脑真的很热并且不打印任何东西!但是,当我分配num = 2**10
它时。我怎样才能计算大约。普通计算机运行此代码需要多长时间?代码是:
num = 2**100
cnt = 0
import time
t0 = time.clock()
for i in range(num):
cnt = cnt+1
print(cnt)
t1 = time.clock()
print("running time: ", t1-t0, " sec")
那是因为你的计算机永远不会用 2**30 完成计算。
为此使用 Ipython 笔记本。它有一个名为 %%timeit 的神奇函数,您可以在其中执行此类操作。
也许2**30
是太多了。这种东西的O是O(2**n)
。这意味着这2**30
将花费大约 2*20 比2**10
. 这是很多时间。
使用 IPython 查看时间:
算一下,再将时间加倍 20 次,看看使用 2**30 需要多少时间。
如果您的缩进与您正在运行的内容准确无误,则您的代码可能无法进入打印功能,这会使脚本看起来好像没有做任何事情。
for i in range(num):
cnt = cnt+1
print(cnt)
不一样:
for i in range(num):
cnt = cnt+1
print(cnt)
如果要检查脚本的进度,可以使用 mod 偶尔使用 print 语句。您可以根据计算机的速度调整延迟量,但我只会每 2-5 秒打印一次进度更新。
delay = 5000
for i in range(num):
cnt = cnt+1
if i % delay == 0:
print("Current interation: {}".format(cnt)) # Will only print when i is divisible by the delay amount