基于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基础教程之序列详解
Aug 29 Python
Python中if __name__ == "__main__"详细解释
Oct 21 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
Python的socket模块源码中的一些实现要点分析
Jun 06 Python
python实现壁纸批量下载代码实例
Jan 25 Python
一文了解Python并发编程的工程实现方法
May 31 Python
python将类似json的数据存储到MySQL中的实例
Jul 12 Python
OpenCV+Python--RGB转HSI的实现
Nov 27 Python
python3 sleep 延时秒 毫秒实例
May 04 Python
Python如何实现Paramiko的二次封装
Jan 30 Python
python游戏开发之pygame实现接球小游戏
Apr 22 Python
Python循环之while无限迭代
Apr 30 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
Yii2中DropDownList简单用法示例
2016/07/18 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
vue中的watch监听数据变化及watch中各属性的详解
2018/09/11 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
PHP笔试题
2012/02/22 面试题
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
教师个人鉴定材料
2014/02/08 职场文书
初中家长寄语
2014/04/02 职场文书
如何写好自荐信
2014/04/07 职场文书
社区活动策划方案
2014/08/21 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫
Axios代理配置及封装响应拦截处理方式
2022/04/07 Vue.js