前提条件
- macOS Catalina 10.15.1
- anaconda 4.17.12
- jupyter-notebook 5.0.0
- Python 3.6.9
マジックコマンドとは
マジックコマンド(Magic Commands)は、IPythonのカーネルから提供される仕組み。Notebookの動作に関連した機能のほか、ディレクトリ移動やファイル一覧を表示するなどのユーティリティ的な機能を提供する。
マジックコマンドの基本
先頭に%
を入力して続けてコマンドを入力する。現在のディレクトリを出力するコマンドは次のようになる。
%pwd
マジックコマンドの%pwd
は、シェルを利用した!pwd
と違いがないようにも見えるが、!
を利用したコマンド実行はOSのシェルに依存するのに対し、マジックコマンドはIPythonカーネルから提供される機能に依存。
マジックコマンドが何らかの値を変える場合、Pythonの関数を呼び出した場合と同様、戻り値を変数に代入できる。
curr_dir = %pwd
curr_dir
使いがちなマジックコマンド
-
%time
Pythonの実行時間を計測するマジックコマンド。
%time sum(range(10000)) CPU times: user 226 μs, sys: 0 ns, total: 226 μs Wall time: 230 μs
出力 | 説明 |
---|---|
Wall time | プログラムの開始から終了までにかかった時間 |
CPU times: user | user CPU time。プログラム自体の実行に要した時間 |
sys | system CPU time。OSのシステムコールに要した時間 |
-
%timeit
複数回試行した結果の計測値を要約して返すマジックコマンド。以下の場合、1000回の繰り返し処理を7回試行した場合の時間が出力されている。
%timeit sum(range(10000)) 224 µs ± 21.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
ループ回数と試行回数はオプションで指定可能。
# ループ回数2000回、試行回数5回 %timeit -n 2000 -r 5 sum(range(10000)) 215 µs ± 17.9 µs per loop (mean ± std. dev. of 5 runs, 2000 loops each)
複数行のPythonコードに対して%timeitによる計測を行う場合、以下のように先頭の
%
を2つ続け、%%
にする。(Cell magics)%%timeit -n 1000 -r 3 for i in range(1000): i * 2 75.2 µs ± 9.58 µs per loop (mean ± std. dev. of 3 runs, 1000 loops each)
-
%history
コードセルの実行履歴を一覧で取得するマジックコマンド。
# 直近5つの履歴を取得 %history -l 5
-
%ls
UNIXコマンドの
ls
と同様の動作をするマジックコマンド。!ls
とは違い、%ls
はOSの種別を判断して、内部で実行するコマンドを使い分ける。(macOSの場合はls
コマンド、Windowsの場合はdir
コマンド) -
%autosave
Auto Saveの頻度を変更できる。(default120秒)
# Auto Saveを60秒に1回実行する。 %autosave 60
-
%matplotlib
Matplotlibに関する設定を行うマジックコマンド。
-
%matplotlib inline
inlineを指定した場合、コードセル直下にグラフが描画される。
%matplotlib tk
tkを指定した場合、別ウィンドウにインタラクティブなグラフが出力される。
-
%matplotlib notebook
notebookを指定した場合、コードセルの直下にインタラクティブなグラフが出力される。
- 一度指定した出力方法を変更するには、カーネルのリスタートを行う。
-