使用numba加速你的python代码

Python 是一种解释型语言,它不需要编译为机器码,在执行的过程中实时被解释器解析执行,因此的它的速度相对于其他的一些编译型语言C/C++,Java等要慢很多,

但Python具有非常大的灵活性,易于上手,所以Python目前是非常受欢迎的编程语言。

如何提高Python的运行速度

提高python的运行速度有很多种方法这里列举两个

1 使用cython将python代码编译为c语言,在linux系统下非常推荐这样做。

2 使用ctypes,pybindll ,CFFI等调用C/C++库

但这些方法使用过程种多少是有一些学习成本的,不太适合刚入门的Python新手,这里推荐Numba库来加速数学类的计算密集型的Python代码。

numba加速计算密集型的代码

按照官网的定义numba将Python代码在运行过程使用工业标准的LLVM编译器库实时优化为机器码,经过numba优化后的python代码可以达到C语言或者FORTRAN的速度。

你不需要替换Python解释器,也不需要安装C/C++编译器,只需要使用numba修饰器修饰Python的函数,剩下的就交给Numba吧。

官网地址是:https://numba.pydata.org/

Numba的用法很丰富,这里只做最容易上手的入门说明

首先安装numba

pip install numba或者conda install numba

下面用大家喜欢用的蒙特卡洛模拟计算 π的代码来对比一下numba的加速效果,简单说明一下这个计算π的原理,蒙特卡洛模拟是使用大量随机逐渐发现真理的算法。下面的算法是说如果你在地上画一个正方形,在正方形中画一个圆,如果你从空中往下扔100万个小球,计算(落在圆形区域的球数)/(落在整个正方形区域内的球数)这个数字会近似π/4

圆型的面积站总面的π/4

蒙特卡洛模拟计算 π加速对比

使用numba只需要在函数上使用@njit来修饰函数即可,从结果来看,代码速度提升超过50倍,效果非常明显。需要注意的一点是numba加速的函数在第一次运行时速度会稍慢,因为第一次需要花费一些编译时间,这里的对比都是使用第二次运行的时间来做对比。

numba还有很多修饰符如下,这里我们只使用最常用的@njit来测试性能,这个修饰符已经满足入门新手的大部分的应用。

· @njit

· @vectorize

· @guvectorize

· @stencil

再举一个复杂一点的例子,我们使用python代码来实现一个低性能的深度机器学习的卷积操作,首先定义一个2d卷积函数

卷积的低性能实现

这个低性能的卷积函数在Python下运行需要15秒左右

使用如下的代码做个测试,代码中使用一个3*3*3的随机卷积核对狗狗图像进行一次卷积

实现的效果就是一次随机的卷积,如下:

代码运行时间是15s左右,下面使用@njit对卷积函数做修饰用同样的代码在做一次卷积测试时间消耗在0.2s左右同样达到了超过50倍的加速。

仅仅使用@njit对同样的代码做修饰

Numba的使用场景

值得注意的是numba是应用在计算密集型的数学运算场景,尤其和numpy结合起来的计算,非常推荐使用。Python里的一些复杂类型不能得到加速,下面使用Python的原生数组举个例子,代码中简单的对python原生数组做个求和操作。

可以看到使用numba修饰函数,反而造成了更多的时间消耗,所以在使用numba加速代码前,需要考虑一下自己的场景是否需要numba进行加速,这里如果把原生数组换成numpy数组就没有任何问题了,这也说明了使用numba加速数组时最好和numpy结合。

结论:

numba只需要一行修饰代码就可以使你的Python数学计算代码,加速几十倍以上。一起试试吧

本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系admin#jikehao.com删除。
(0)
极客号的头像极客号
上一篇 2022年 10月 13日
下一篇 2022年 10月 13日

相关推荐

  • 10万元买什么车好?

    谢邀 吱~ “2买什么车”“5万买什么车”“10万买什么车”,这些问题是每天后台大家问的最多的问题,对此我在“ask吱吱吱”节目里也一次次跟大家讲解(关注微信公众号“李老鼠说车”就…

    2022年 10月 2日
  • 杜兰特22分西蒙斯4分6失误,篮网80-109不敌热火

    篮网季前赛80-109不敌热火。 凯里-欧文因为孩子出生缺席,凯文-杜兰特12投8中得到22分,本-西蒙斯25分钟得到4分10个篮板4次助攻6次失误。篮网多达26次失误,三分球28…

    2022年 10月 7日
  • 中国教育统计网登录不上(中国教育统计网)

    2011中国教育统计网的下载及登录问题,明白一点的 1、在百度输入“中国教育统计网”进入网站。下载并安装好操作系统补丁(必须安装)。下载并安装统计软件安装包、升级包。安装好后即可运…

    2023年 7月 31日
  • 多家美国华尔街公司因记录管理不严遭巨额罚款

    当地时间9月27日,美国证券交易委员会宣布,因未能保存员工之间的短信等电子记录,美国监管机构将对16家华尔街公司处以共计11亿美元的罚款。这些被罚款的华尔街公司包括巴克莱证券公司、…

    2022年 9月 28日
  • 出现下肢浮肿应考虑什么病?

    在临床上经常会看到下肢浮肿的病人,老年人尤其多见,那出现下肢浮肿都可见于什么病呢? 首先要除外器质性疾病,临床上能引起下肢浮肿的病很多,如果是双侧下肢都浮肿,最常见的就是心力衰竭、…

    2022年 10月 12日
  • 跑步软件排行榜第一名咕咚(跑步软件排行榜)

    好用的室内运动软件有哪些?室内运动app排行榜 天天跳绳天天跳绳软件是通过ai只能计数计算跳绳的次数的,你只需要去拥有一根跳绳就可以在家进行跳绳了,还支持跳绳名人堂,同时软件还有跳…

    2023年 12月 4日
  • 坚持可持续发展的意义(可持续发展的意义)

    本文主要讲的是可持续发展的意义,以及和坚持可持续发展的意义相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 可持续发展战略的意义 实施可持续发展战源略, 有利于促进…

    2023年 5月 11日
  • 30年前,山东一富商买下2箱茅台酒,如今儿子结婚取出,酒咋样了

    30年前,山东一富商买下2箱茅台酒,如今儿子结婚取出,酒咋样了 “老酒”一直都是备受关注的话题,尤其是对于有钱人来说,他们选择一款白酒已经不仅仅讲究品质和档次,更讲究内涵,像“老酒…

    2022年 10月 2日
  • 芝加哥农产品期价7日上涨

    新华社芝加哥10月7日电(记者徐静)芝加哥期货交易所玉米、小麦和大豆期价7日全线上涨。 当天,芝加哥期货交易所玉米市场交投最活跃的12月合约收于每蒲式耳6.8325美元,比前一交易…

    2022年 10月 8日
  • 极有家认证的东西靠谱吗(极有家的商家可靠吗)

    天猫极有家,是天猫家居对产品的一种品质背书。这里面的产品有设计感,有格调,估计很多在淘宝天猫买过家居的人,都或多或少浏览过或买过极有家的商品。 本期,我们也从极有家上买了一款大沙发…

    2022年 9月 29日

合作联系:1152QQ041010