Python numbaを用いたPythonの高速化
numba
は、関数を最適化し、高速化することができるPythonライブラリ- LLVMコンパイラライブラリを用いて、Python関数を実行時に最適化されたマシンコードに変換する
Install
Usage
高速化したい関数に @jit
デコレータを付ける
2つのコンパイルモード
@jit
@jit(nopython=True)
@jit
デコレータを指定してPython
無しモードでのコンパイルに失敗した場合、オブジェクトモードで再度関数をコンパイルする(遅くなる)
@jit(nopython=True)
でコンパイルに失敗した場合は、例外が発生する
高速化されないケース
- リスト内包表記やジェネレータ式
- 任意の長さの文字列を扱う文字列メソッド
- 高階関数 (map、filter、reduce)
-
yield 文を含むジェネレータ
-
関数内で import 文を使用している場合
- 関数内で exec 文を使用している場合
- 関数内で eval 関数を使用している場合
- 関数内で import 関数を使用している場合
- 関数内で sys.exit() を使用している場合