美文网首页
numba,极其有效提升Python效率的装饰器

numba,极其有效提升Python效率的装饰器

作者: yousa_ | 来源:发表于2019-09-26 13:42 被阅读0次

    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是真爱啊,所以,日常编程中,小伙伴们赶快用起来叭!

    相关文章

      网友评论

          本文标题:numba,极其有效提升Python效率的装饰器

          本文链接:https://www.haomeiwen.com/subject/yvkjuctx.html