-1

我在 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")   
4

3 回答 3

1

那是因为你的计算机永远不会用 2**30 完成计算。

于 2013-10-14T18:35:02.013 回答
1

为此使用 Ipython 笔记本。它有一个名为 %%timeit 的神奇函数,您可以在其中执行此类操作。

也许2**30是太多了。这种东西的O是O(2**n)。这意味着这2**30将花费大约 2*20 比2**10. 这是很多时间。

使用 IPython 查看时间:

在此处输入图像描述

算一下,再将时间加倍 20 次,看看使用 2**30 需要多少时间。

于 2013-10-14T18:36:25.630 回答
0

如果您的缩进与您正在运行的内容准确无误,则您的代码可能无法进入打印功能,这会使脚本看起来好像没有做任何事情。

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
于 2013-10-22T20:27:40.283 回答