python科学计算:加速库numba —— 安装和试用

  1. 安装(anaconda环境下)

conda install numba


  1. Demo代码:
from numba import jit 
from numpy import arange
import numpy
import time

@jit
def sum2d(arr):
    M, N = arr.shape
    result = 0.0
    for i in range(M):
        for j in range(N):
            result += arr[i, j]
    return result

a = arange(90000).reshape(300, 300)
# print(sum2d(a))


time_a = time.time()
x = sum2d(a)
time_b = time.time()
print(x, time_b - time_a)


time_a = time.time()
x = numpy.sum(a)
time_b = time.time()
print(x, time_b - time_a)

运行表现:

image

可以看到,使用numba后代码速度没有提升反而下降,由此可知要正确使用numba还是很有门槛的。



在numba中通过指定变量的数据类型来提高运算速度:

from numba import jit, int32, int64
from numpy import arange
import numpy
import time

@jit(int64(int64[:,:], ))
def sum2d(arr):
    M, N = arr.shape
    result = 0.0
    for i in range(M):
        for j in range(N):
            result += arr[i, j]
    return result

a = arange(90000).reshape(300, 300)
# print(sum2d(a))


time_a = time.time()
x = sum2d(a)
time_b = time.time()
print(x, time_b - time_a)

运行表现:

image


可以看到,速度提高了1000倍,不过与numpy版本的用时相比依旧高很多,具体为16/6=2.67倍。



posted on 2024-07-25 13:46  Angry_Panda  阅读(57)  评论(0编辑  收藏  举报

导航