使用numba对Python运算加速的方法


Posted in Python onOctober 15, 2018

有时候需要比较大的计算量,这个时候Python的效率就很让人捉急了,此时可以考虑使用numba 进行加速,效果提升明显~

(numba 安装貌似很是繁琐,建议安装Anaconda,里面自带安装好各种常用科学计算库)

from numba import jit

@jit
def t(count=1000):
 total = 0
 for i in range(int(count)):
  total += i
 return total

测试效果:

(关于__wrapped__ 见我的博文: 浅谈解除装饰器作用(python3新增) )

In [17]: %timeit -n 1 t.__wrapped__()
1 loop, best of 3: 52.9 µs per loop

In [18]: %timeit -n 1 t()
The slowest run took 13.00 times longer than the fastest. This could mean that an intermediate result is being cached.
1 loop, best of 3: 395 ns per loop

可以看到使用jit 加速后,即使设置测试一次,实际上还是取了三次的最优值,如果取最坏值(因为最优值可能是缓存下来的),则耗时为395ns * 13 大概是5us 还是比不使用的52.9us 快上大概10倍,

增大计算量可以看到使用numba加速后的效果提升更加明显,

In [19]: %timeit -n 10 t.__wrapped__(1e6)
10 loops, best of 3: 76.2 ms per loop

In [20]: %timeit -n 1 t(1e6)
The slowest run took 8.00 times longer than the fastest. This could mean that an intermediate result is being cached.
1 loop, best of 3: 790 ns per loop

如果减少计算量,可以看到当降到明显小值时,使用加速后的效果(以最差计)与不加速效果差距不大,因此如果涉及到较大计算量不妨使用jit 加速下,何况使用起来这么简便。

%timeit -n 1 t(10)
1 loop, best of 3: 0 ns per loop

%timeit -n 100 t.__wrapped__(10)
100 loops, best of 3: 1.79 µs per loop

%timeit -n 1 t(1)
The slowest run took 17.00 times longer than the fastest. This could mean that an intermediate result is being cached.
1 loop, best of 3: 395 ns per loop

%timeit -n 100 t.__wrapped__(1)
100 loops, best of 3: 671 ns per loop

以上这篇使用numba对Python运算加速的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
Nov 29 Python
python装饰器常见使用方法分析
Jun 26 Python
如何利用Pyecharts可视化微信好友
Jul 04 Python
python分割一个文本为多个文本的方法
Jul 22 Python
Django 重写用户模型的实现
Jul 29 Python
用Python批量把文件复制到另一个文件夹的实现方法
Aug 16 Python
Python3 JSON编码解码方法详解
Sep 06 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
python 实现批量图片识别并翻译
Nov 02 Python
Python自动化之批量处理工作簿和工作表
Jun 03 Python
浅谈解除装饰器作用(python3新增)
Oct 15 #Python
python  创建一个保留重复值的列表的补码
Oct 15 #Python
python 美化输出信息的实例
Oct 15 #Python
python  Django中的apps.py的目的是什么
Oct 15 #Python
使用Python监视指定目录下文件变更的方法
Oct 15 #Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 #Python
彻彻底底地理解Python中的编码问题
Oct 15 #Python
You might like
php实现推荐功能的简单实例
2019/09/29 PHP
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
Python基础之文件读取的讲解
2019/02/16 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
Python的log日志功能及设置方法
2019/07/11 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
全球性的在线购物网站:Zapals
2017/03/22 全球购物
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
高中军训感言1000字
2014/03/01 职场文书
设计专业自荐信
2014/06/19 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
文明上网主题班会
2015/08/14 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS