IPythonには、コードの実行時間を計測したり、外部ファイルを操作したりするための便利なコマンド群「マジックコマンド(Magic Functions)」が用意されています。これらは先頭に % を付けて実行します。
目次
主なマジックコマンド一覧
| マジック関数 | 役割 | パラメータ例 |
%timeit | コードの実行時間を計測する(複数回実行して平均値を算出) | %timeit range(100) |
%run | 外部のPythonスクリプトファイルを実行する | %run script.py |
%history | これまでの入力履歴を表示する | %history -n 1-5 |
%save | 指定した行の履歴をファイルに保存する | %save file.py 1-10 |
%load | 外部ファイルのコードを現在の入力セルに読み込む | %load script.py |
%pwd | 現在の作業ディレクトリ(パス)を表示する | %pwd |
%ls | 現在のディレクトリ内のファイル一覧を表示する | %ls |
実行例
1. コードの実行時間を計測する (%timeit)
指定したコードを自動的に複数回ループ実行し、最も正確な平均実行時間を算出します。
In [1]: %timeit list(range(1000))
9.85 µs ± 120 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
2. 外部スクリプトを実行する (%run)
カレントディレクトリにある .py ファイルを、IPython環境内で実行します。実行後の変数はそのままIPython内で参照可能です。
sample.py (事前に作成されたファイル)
print("This is a sample script.")
message = "Hello from script!"
IPythonでの実行
In [2]: %run sample.py
This is a sample script.
In [3]: print(message)
Hello from script!
3. 履歴の参照と保存 (%history, %save)
過去に入力したコードを確認したり、特定の行だけを選んでファイルに保存したりできます。
# 何かコードを実行します
In [4]: s = "sample string"
In [5]: print(s)
sample string
# 履歴を確認します(オプションなしですべて表示)
In [6]: %history
%timeit list(range(1000))
%run sample.py
print(message)
s = "sample string"
print(s)
# 特定の行(4行目と5行目)を 'sample2.py' に保存します
In [7]: %save sample2.py 4 5
The following commands were written to file 'sample2.py':
s = "sample string"
print(s)
4. コードの読み込み (%load)
ファイルの内容を現在のセルに展開します。実行前に内容を確認・編集したい場合に便利です。
In [8]: %load sample2.py
# 実行すると、以下のようにセルの内容が書き換わります
# %load sample2.py
s = "sample string"
print(s)
補足:ラインマジックとセルマジック
- ラインマジック (
%): 1行単位で有効なコマンドです。(例:%timeit) - セルマジック (
%%): セル全体に対して有効なコマンドです。(例:%%timeitと書くと、そのセルの複数行のコード全体の時間を計測します)
