15

特に通常のリストとnumpyリストの場合、2つの同一のリスト間の処理時間をテストしたいと思います。私のコードは

import timeit
import numpy as np

t = timeit.Timer("range(1000)")
print t.timeit()

u = timeit.Timer("np.arange(1000)")
print u.timeit()

の計算tは問題ありませんが、uNameError: global name 'np' is not defined がリストされています。

処理時間を取得するには、どのようにコーディングすればよいですか?

4

3 に答える 3

16

このtimeit.Timerクラスは、2 つの異なる方法で使用できます。

ソースコードをコンパイルして実行することができます — この場合、コードはコードのみが実行された新しい環境で実行さsetupれます。現在の環境 (他の callable と同様)。

したがって、次の 2 つのオプションがあります。

u = timeit.Timer("np.arange(1000)", setup='import numpy as np')

…または…</p>

u = timeit.Timer(lambda: np.arange(1000))

最初のケースでは、たまたまやったという事実import numpy as npは関係ありません。がコンパイルおよび実行される環境には影響しませnp.arange(1000)ん (したがって、ビットに含める必要がありsetup=...ます)。

2 番目のケースでは、 を実行したという事実がimport numpy as np明らかlambda: np.arange(1000)関連しています。これは、 を含むコードが評価される環境に影響します。

于 2014-01-19T11:57:06.620 に答える
5

setupパラメータを使用:

u = timeit.Timer("np.arange(1000)", setup='import numpy as np')
于 2014-01-19T11:39:20.960 に答える