python由于它动态解释性语言的特性,跑起代码来相比java、c++要慢很多,尤其在做科学计算的时候,十亿百亿级别的运算,让python的这种劣势更加凸显。
办法永远比困难多,numba就是解决python慢的一大利器,可以让python的运行速度提升上百倍!
什么是Numba?
numba是一款可以将python函数编译为机器代码的JIT编译器,经过numba编译的python代码(仅限数组运算),其运行速度可以接近C或FORTRAN语言。
python之所以慢,是因为它是靠CPython编译的,numba的作用是给python换一种编译器.
使用numba非常简单,只需要将numba装饰器应用到python函数中,无需改动原本的python代码,numba会自动完成剩余的工作。
学习使用numba
第一步:导入numpy、numba及其编译器
from numba import jit
第二步:传入numba装饰器jit,编写函数
@jit(nopython = True)
def _count():
j = 0
for i in range(10000000):
j += 1
使用jit装饰后的函数快到什么程度呢?这里我们做两个小测验。
首先我用常规的for函数来run,然后用timeit()函数测了一下每行用时,434ms的样子。
接下来是装饰jit后的用时,从434ms缩短为55.6ns,但是肯定不可能这么夸张,而且两个的timeit函数中loop数也不一样,不知道这破函数是怎么比较的。
还是用time函数直观一点。
word妈!这就有点恐怖了吧,速度快了何止三个数量级!!
总结
什么时候使用umba呢?
- 使用numpy时
- 函数中有for循环时。
numba对for是真爱啊,所以,日常编程中,小伙伴们赶快用起来叭!
网友评论