基于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 11 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
python处理大日志文件
Jul 23 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
Python命令行click参数用法解析
Dec 19 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
Python urllib.request对象案例解析
May 11 Python
Python绘制分类图的方法
Apr 20 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 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面向对象的方法重载两种版本比较
2008/09/08 PHP
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
php实现记事本案例
2020/10/20 PHP
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
js实现文字滚动效果
2016/03/03 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
微信小程序仿通讯录功能
2020/04/09 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
python之super的使用小结
2018/08/13 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Python pip配置国内源的方法
2020/02/14 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
医院办公室主任职责
2013/12/29 职场文书
《画》教学反思
2014/04/14 职场文书
上班离岗检讨书
2014/09/10 职场文书
大学生自我评价范文
2015/03/03 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
JavaScript 实现页面滚动动画
2021/04/24 Javascript