基于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将ip地址转换成整数的方法
Mar 17 Python
python常见数制转换实例分析
May 09 Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
python自动查询12306余票并发送邮箱提醒脚本
May 21 Python
Python实现常见的回文字符串算法
Nov 14 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
python实现kmp算法的实例代码
Apr 03 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
Python socket服务常用操作代码实例
Jun 22 Python
Jupyter Notebook安装及使用方法解析
Nov 12 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 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
php 无法载入mysql扩展
2010/03/12 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
破解Session cookie的方法
2006/07/28 Javascript
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
python中的字典操作及字典函数
2018/01/03 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
python pygame实现2048游戏
2018/11/20 Python
Python使用python-docx读写word文档
2019/08/26 Python
python 使用shutil复制图片的例子
2019/12/13 Python
使用Python构造hive insert语句说明
2020/06/06 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
药学专业个人自我评价
2013/11/11 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
社团活动总结报告
2014/06/27 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
法制教育观后感
2015/06/17 职场文书
干部理论学习心得体会
2016/01/21 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
vue选项卡切换的实现案例
2022/04/11 Vue.js