基于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实现telnet客户端的方法
Apr 15 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
python装饰器深入学习
Apr 06 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
pymongo中聚合查询的使用方法
Mar 22 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
pytorch中图像的数据格式实例
Feb 11 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
Python判断变量是否是None写法代码实例
Oct 09 Python
python实现socket简单通信的示例代码
Apr 13 Python
pandas 实现将NaN转换为None
May 14 Python
python创建字典及相关管理操作
Apr 13 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 cli模式学习(PHP命令行模式)
2013/06/03 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
Python input函数使用实例解析
2019/11/22 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
pandas按条件筛选数据的实现
2021/02/20 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
毕业生在校学习的自我评价分享
2013/10/08 职场文书
2013年员工自我评价范文
2013/12/27 职场文书
自我鉴定书
2014/03/24 职场文书
护理见习报告范文
2014/11/03 职场文书
见习报告格式要求
2014/11/04 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android