2017-04-09 13 views
1

これは、スパイダー(IPython3カーネル)に1をコードセルの上部に%%timeまたは%%timeitのコマンドを実行して、簡単にタイムコードセルをできると思わ:測定ランタイム

#%% 
%%time # or %%timeit which measures average runtime from multiple runs 
.... 

#%% (the previous cell ends and the next begins) 

ランニング上記のコードは、#%%のペアで定義されたセルのランタイムを取得できます。これはSpyderでの動作ですが、Jupyterノートブック環境ではうまく動作しません。

Jupyterのコードセルは、#%%区切り記号で定義されておらず、メニューバーのボタンをクリックすると作成されます。そして私が試みた限りでは、コマンド%%time%%timeitはどちらもコンパイルエラーを引き起こします。 Jupyterはそれらを認識できないようですが、私のJupyterが実際にSpyderと同じIPythonカーネルを使用しているので奇妙です。 Jupyterで働くことの一つは%time%timeitコマンドであるが、彼らは唯一の1行のコードの実行時間を測定することができ、すなわち、

%time blah blah 

のように定式化されなければならないと私も測定できないことが判明forループは2つ以上のラインで構成されます。だから、この方法は私には望ましくない。 Jupyterのマジックコマンド%time(it)などを使ってセルランタイムを評価する方法はありますか?

(PS:スパイダーのように私は、セルの上部に%timeコマンドを添付する場合があり、それを同じラインでを以下のものは何もありませんし、それが実際に何を測定していないので、それがWall time: 0 nsを与える)

+1

'%% time'と' %% timeit'は有効なIPythonセルマジックであり、ノートブックセルの最初の行として動作するはずです。 JupyterとIPythonのどのバージョンを使用していますか? – cco

+0

@cco Jupyter 4.3.1とIPython 4.2.1は、最新のものでなければなりません。 – Vim

+0

'%% time'を使用しようとすると、セルとエラーを表示してください - '%time'が動作すれば '%% time'も有効です。 – cco

答えて

4

それ時間情報をどのように使用するかによって決まります...

あなたの知識のためにセルがどれだけ長く実行されたかを知りたければ、ExecuteTimeノートブックの拡張機能(https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tree/7672d429957aaefe9f2e71b15e3b78ebb9ba96d1/src/jupyter_contrib_nbextensions/nbextensions/execute_time)は素晴らしいソリューションですすべてのコード・セルのリアルタイム情報を自動的に表示するため、タイミングを追加する必要がないため、コードのメンテナンスが軽減されます。どこにでもコードを書くことができます。ノートブックを科学的なログブックとして使用している場合に便利な、最後に実行された日付スタンプも書き込みます。

ただし、プログラムで時間情報を使用する場合は、時間情報を変数に取り込むコードを追加する必要があります。

import timeit 
start_time = timeit.default_timer() 
# code you want to evaluate 
elapsed = timeit.default_timer() - start_time 

明らかに、これは、細胞の魔法を使用してのようにきちんとしていないですが、仕事を得る必要があります。この回答(Get time of execution of a block of code in Python 2.7)あたりとして、あなたははtimeitモジュールを使用することができます。

あなたがセルマジックを使って後者を達成する方法は、わかりません。

+0

提案していただきありがとうございます。はい、私は各セルの冒頭で%% timeitコマンドを使用して後者を達成できます。 – Vim