前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python的numba加速

python的numba加速

作者头像
钱塘小甲子
发布2019-01-28 15:52:59
1.1K0
发布2019-01-28 15:52:59
举报

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

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

        不说了,我们来看一下:

#-*-coding:utf-8-*-
import time
import pandas as pd
def time_com(i):
    cum = 0
    for test in range(i):
        for ind in range(i):
            cum += (test * ind) % 3

if __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 time
import pandas as pd
from numba import jit

@jit
def time_com(i):
    cum = 0
    for test in range(i):
        for ind in range(i):
            cum += (test * ind) % 3

if __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哦。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年11月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档