-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 倍にして、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 に答える