原文出自微信公众号:Python那些事
一、介绍
pip install numba
Numba 是 python 的即时(Just-in-time)编译器,即当你调用 python 函数时,你的全部或部分代码就会被转换为“即时”执行的机器码,它将以你的本地机器码速度运行!它由 Anaconda 公司赞助,并得到了许多其他组织的支持。
在 Numba 的帮助下,你可以加速所有计算负载比较大的 python 函数(例如循环)。它还支持 numpy 库!所以,你也可以在你的计算中使用 numpy,并加快整体计算,因为 python 中的循环非常慢。你还可以使用 python 标准库中的 math 库的许多函数,如 sqrt 等。有关所有兼容函数的完整列表,请查看 此处。
二、为什么选择 Numba
那么,当有像 cython 和 Pypy 之类的许多其他编译器时,为什么要选择 numba?
原因很简单,这样您就不必离开写 python 代码的舒适区。是的,就是这样,您根本不需要为了获得一些的加速来改变您的代码,这与您从类似的具有类型定义的 cython 代码获得的加速相当。那不是很好吗?
您只需要添加一个熟悉的 python 功能,即添加一个包装器(一个装饰器)到您的函数上。类的装饰器也在开发中了。
所以,您只需要添加一个装饰器就可以了。例如:
from numba importjit
@jitdeffunction(x):#your loop or numerically intensive computations
return x
示例:
from numba importjitimportfunctoolsimporttimedefrun_time(func):
@functools.wraps(func)defwrapper():
start=time.time()
func()
end=time.time()
cos= end -startreturncosreturnwrapper
@run_time
@jit()deftest():
x=0for i in range(100000000):
x= x +i
@run_timedeft