私はいつも次のように時間を計算するためにコードを読みます:
%timeit function()
ここで「%」の意味を説明していただけますか?
「%」は常に文字列内の何かを置き換えるために使用されると思います。たとえば、%sは文字列を置き換えることを意味し、%dはデータを置き換えることを意味しますが、この場合についてはわかりません。
回答:
%timeit
はipythonの魔法の関数であり、特定のコードの時間を計るために使用できます(単一の実行ステートメントまたは単一のメソッド)。
ドキュメントから:
%timeit
Time execution of a Python statement or expression Usage, in line mode: %timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement
これを使用するには、たとえば、使用xrange
する方が使用するよりも速いかどうかを確認したい場合はrange
、次のようにするだけです。
In [1]: %timeit for _ in range(1000): True
10000 loops, best of 3: 37.8 µs per loop
In [2]: %timeit for _ in xrange(1000): True
10000 loops, best of 3: 29.6 µs per loop
そして、あなたはそれらのタイミングを取得します。
の主な利点は次の%timeit
とおりです。
標準ライブラリからインポートする必要はなく、コードを複数回実行して、どちらがより良いアプローチであるかを判断する必要はありません。timeit.timeit
%timeitは、合計2秒の実行ウィンドウに基づいて、コードに必要な実行数を自動的に計算します。
またtimeit.timeit
、timeitが機能する別の環境でビルドされる変数をビルドする場合のように、コードスニペット全体を渡さずに現在のコンソール変数を利用することもできます。
%timeit function()
timer.timeit
-それは実際のモジュール名ですか?
10000 loops, best of 3: 29.6 µs per loop
は次のように解釈できます。(1。)式を10000回実行して合計時間を取得します(2.)次に合計時間を10000で割って「ループごと」の時間を取得し、(3。)合計時間を計算します3回、最後に(4.)合計3回のうち、最小合計時間(別名「ベストオブ3」)が出力として使用されます。私の解釈は正しいですか、はい/いいえ?
これは、iPythonではラインマジックとして知られています。それらは、引数が現在の行の終わりまでしか拡張されないという点で独特であり、魔法自体は実際にはコマンドライン開発用に構造化されています。 timeit
コードの実行時間を計るために使用されます。
使用できるすべての魔法を確認したい場合は、次のように入力するだけです。
%lsmagic
ラインマジックとセルマジックの両方のリストを取得します。
ここのドキュメントからのいくつかのさらなる魔法の情報:
IPythonには、Pythonの構文に直交し、ユーザーが新しいコマンドで拡張できるミニコマンド言語を効果的に提供する、マジックと呼ばれるコマンドシステムがあります。マジックはインタラクティブに入力することを目的としているため、引数を区切るための空白、オプションのダッシュ、およびコマンドライン環境で一般的なその他の規則など、コマンドラインの規則を使用します。
ラインモードかセルモードかに応じて、を使用する2つの異なる方法があります%timeit
。あなたの質問は最初の方法を示しています:
In [1]: %timeit range(100)
対。
In [1]: %%timeit
: x = range(100)
:
IPythonはそれらをインターセプトします。これらは組み込みのマジックコマンドと呼ばれます。リストは次のとおりです:https://ipython.org/ipython-doc/dev/interactive/magics.html
独自のカスタムマジックを作成することもできます、https: //ipython.org/ipython-doc/dev/config/custommagics.html
あなたはtimeit
ここにあるhttps://ipython.org/ipython-doc/dev/interactive/magics.html#magic-timeit
%% timeitについて非常に微妙な点を追加したかっただけです。セルで「魔法」を実行すると、エラーが発生します...
UsageError:ラインマジック関数%%timeit
が見つかりません
... %% timeitより上にコード/コメント行がある場合。つまり、%% timeitがセルの最初のコマンドであることを確認してください。
私はそれがすべての専門家が当たり前だと言う小さなポイントであることを知っていますが、魔法のトリックから始める若いウィザードのために私の0.5セントを追加したかっただけです。