基于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入门篇之正则表达式
Oct 20 Python
Python的Django框架中forms表单类的使用方法详解
Jun 21 Python
在Django同1个页面中的多表单处理详解
Jan 25 Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 Python
python指定写入文件时的编码格式方法
Jun 07 Python
Python字符串中添加、插入特定字符的方法
Sep 10 Python
解析Python3中的Import
Oct 13 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 Python
python的help函数如何使用
Jun 11 Python
详解如何修改python中字典的键和值
Sep 29 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
关于svn冲突的解决方法
2013/06/21 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
php实现的xml操作类
2016/01/15 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
墨西哥购物网站:Elektra
2020/01/21 全球购物
行政管理人员精品工作推荐信
2013/11/04 职场文书
巡警年度自我鉴定
2014/02/21 职场文书
大学英语专业求职信
2014/06/21 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server