python的numba加速

来源:互联网 发布:手机淘宝买东西视频 编辑:程序博客网 时间:2024/05/24 04:50

        之前笔者写过一个pypy的加速方法,可以参阅笔者之前的文章:http://blog.csdn.net/qtlyx/article/details/78078636

        但是这一方法中,我们有一个很不现实的要求,就是所有的python代码都要求是python build-in的库来写。今天,我们使用另外一种jit加速的方法,虽然本质上是一样的,但是其实更加好用,因为支持使用别的库,只要我们把计算瓶颈部分改成使用python的build-in函数来进行计算,毕竟,二八原则,百分之二十的代码支配着百分之八十的速度。

        不说了,我们来看一下:

#-*-coding:utf-8-*-import timeimport pandas as pddef time_com(i):    cum = 0    for test in range(i):        for ind in range(i):            cum += (test * ind) % 3if __name__ == '__main__':    t1 = time.clock()    df = pd.DataFrame()    for i in range(500):        time_com(i)    t2 = time.clock()    print "run time:%f s" % (t2 - t1)

控制台上输出的结果是:

run time:7.714948 s

接下来,我们只加入两行代码,分是是引入numba包,一个是用装饰器修饰我们的计算函数:

#-*-coding:utf-8-*-import timeimport pandas as pdfrom numba import jit@jitdef time_com(i):    cum = 0    for test in range(i):        for ind in range(i):            cum += (test * ind) % 3if __name__ == '__main__':    t1 = time.clock()    df = pd.DataFrame()    for i in range(500):        time_com(i)    t2 = time.clock()    print "run time:%f s" % (t2 - t1)
我们来看一下结果;

run time:0.190903 s

        不说了,勇敢的去加速吧,笔者还特地是用来pandas,然而还是可以加速。但是,要注意的是,在jit装饰器装饰的函数中,不可以有第三方的package哦。



原创粉丝点击