基于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下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
python实现滑雪游戏
Feb 22 Python
Jupyter notebook如何实现指定浏览器打开
May 13 Python
django中related_name的用法说明
May 20 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
详解Python调用系统命令的六种方法
Jan 28 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 Python
python - timeit 时间模块
Apr 06 Python
PyTorch 如何自动计算梯度
May 23 Python
教你如何使用Python Tkinter库制作记事本
Jun 10 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 APC缓存配置、使用详解
2014/03/06 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
2017/02/04 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
jQuery版仿Path菜单效果
2011/12/15 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
Python 中Pickle库的使用详解
2018/02/24 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
python类的实例化问题解决
2019/08/31 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
军训心得体会
2013/12/31 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
文秘大学生求职信
2014/02/25 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
高三毕业评语
2014/12/31 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
html form表单基础入门案例讲解
2021/07/21 HTML / CSS
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL