基于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实现线程池的方法
Jun 30 Python
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
python求质数的3种方法
Sep 28 Python
django Serializer序列化使用方法详解
Oct 16 Python
python中for循环输出列表索引与对应的值方法
Nov 07 Python
python抓取网页内容并进行语音播报的方法
Dec 24 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
python项目对接钉钉SDK的实现
Jul 15 Python
Python 实现自动完成A4标签排版打印功能
Apr 09 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
Sep 15 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中Date获取时间不正确怎么办
2008/06/05 PHP
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
python实现多线程采集的2个代码例子
2014/07/07 Python
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
Python排序算法实例代码
2017/08/10 Python
Python 模拟购物车的实例讲解
2017/09/11 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
python输入错误后删除的方法
2019/10/12 Python
python/golang 删除链表中的元素
2020/09/14 Python
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
法学专业应届生求职信
2013/10/16 职场文书
教导处工作制度
2014/01/18 职场文书
手工社团活动方案
2014/02/17 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
开发房地产协议书
2014/09/14 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
运动会3000米加油稿
2015/07/21 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS