2024年10月30日水曜日

Python の JIT numba を使う

Python の JIT numba を使う

概要

とりあえず試せるコードを紹介します

環境

  • macOS 15.0.1
  • Python 3.11.10
  • numba 0.60.0

インストール

  • pipenv install numpy numba

サンプルコード

import time

import numpy as np
from numba import jit


# 通常のPython関数
def sum_array(arr):
    total = 0
    for i in arr:
        total += i
    return total


# Numbaを使用した関数
@jit(nopython=True)
def sum_array_numba(arr):
    total = 0
    for i in arr:
        total += i
    return total


# 配列の準備
array_size = 10**7
arr = np.random.rand(array_size)

# 通常のPython関数の実行時間を計測
start_time = time.time()
sum_array(arr)
end_time = time.time()
print(f"通常のPython関数の実行時間: {end_time - start_time} 秒")

# Numbaを使用した関数の実行時間を計測
start_time = time.time()
sum_array_numba(arr)
end_time = time.time()
print(f"Numbaを使用した関数の実行時間: {end_time - start_time} 秒")

結果

  • pipenv run python app.py
通常のPython関数の実行時間: 0.46547412872314453 秒
Numbaを使用した関数の実行時間: 0.17465901374816895 

確かに速いです

最後に

使い所としては計算処理なので Web アプリなどでは使い所が難しいです
機械学習で使うにしてもライブラリ側ですでに使っているケースなどもあるので自分で使うケースがないのかも

0 件のコメント:

コメントを投稿