使用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 相关文章推荐
200行自定义python异步非阻塞Web框架
Mar 15 Python
深入理解Python3中的http.client模块
Mar 29 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
python递归实现快速排序
Aug 18 Python
Python中创建二维数组
Oct 17 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
Python检测数据类型的方法总结
May 20 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
Python for i in range ()用法详解
Sep 18 Python
基于Python实现简单学生管理系统
Jul 24 Python
python中time包实例详解
Feb 02 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判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
玩转python爬虫之URLError异常处理
2016/02/17 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
python3 深浅copy对比详解
2019/08/12 Python
基于python plotly交互式图表大全
2019/12/07 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
优秀广告词大全
2014/03/19 职场文书
期末考试复习计划
2015/01/19 职场文书
司考复习计划
2015/01/19 职场文书
罚站检讨书
2015/01/29 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
地道战观后感300字
2015/06/04 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
python之django路由和视图案例教程
2021/07/26 Python
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript