基于Numba提高python运行效率过程解析


Posted in Python onMarch 02, 2020

Numba是Python的即时编译器,在使用NumPy数组和函数以及循环的代码上效果最佳。使用Numba的最常见方法是通过其装饰器集合,这些装饰器可应用于您的函数以指示Numba对其进行编译。调用Numba装饰函数时,它会被“即时”编译为机器代码以执行,并且您的全部或部分代码随后可以本机机器速度运行!

安装numba(我在这里加了--default-timeout=10000,防止安装时出现timeout的错误)

pip --default-timeout=10000 install -U numba
from numba import jit
import time
def add(x):
  he=0
  for i in range(x):
    he+=i
  return he
start=time.time()
res=add(100000000)
print(res)
end=time.time()
print(end-start)
耗时5s
4999999950000000
5.707650184631348

使用Numba的JIT装饰器@jit,以尝试加快某些功能的运行速度

from numba import jit
import time
@jit
def add(x):
  he=0
  for i in range(x):
    he+=i
  return he
start=time.time()
res=add(100000000)
print(res)
end=time.time()
print(end-start)
耗时0.14s,快了近40倍
4999999950000000
0.14488554000854492

看吧,快了40倍!

numba仅对numpy,for和while循环有效!

参考numba官网:http://numba.pydata.org/numba-doc/latest/developer/inlining.html#example-using-numba-jit

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Django框架中编写错误提示页面
Jul 22 Python
在Python的while循环中使用else以及循环嵌套的用法
Oct 14 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 Python
PyTorch预训练的实现
Sep 18 Python
jenkins配置python脚本定时任务过程图解
Oct 29 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
python3 求约数的实例
Dec 05 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 Python
只用Python就可以制作的简单词云
Jun 07 Python
Python3 assert断言实现原理解析
Mar 02 #Python
Django认证系统user对象实现过程解析
Mar 02 #Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 #Python
Python基于requests库爬取网站信息
Mar 02 #Python
使用python3 实现插入数据到mysql
Mar 02 #Python
python数字类型math库原理解析
Mar 02 #Python
Python如何实现在字符串里嵌入双引号或者单引号
Mar 02 #Python
You might like
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中自定义函数的教程
2015/04/27 Python
Python运算符重载用法实例
2015/05/28 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
生物化工专业个人自荐信
2013/09/26 职场文书
毕业生实习鉴定
2013/12/11 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
教师演讲稿大全
2014/05/16 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
会计稽核岗位职责
2015/04/13 职场文书
个人更名证明
2015/06/23 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书