前提条件
- 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に関する設定を行うマジックコマンド。