使用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 相关文章推荐
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
Python读取excel中的图片完美解决方法
Jul 27 Python
python pandas读取csv后,获取列标签的方法
Nov 12 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
Django中多种重定向方法使用详解
Jul 17 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
python suds访问webservice服务实现
Jun 26 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 Python
Python tkinter实现日期选择器
Feb 22 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
第二节--PHP5 的对象模型
2006/11/16 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
php图片添加水印例子
2016/07/20 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
php格式化时间戳
2016/12/17 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
将string解析为json的几种方式小结
2010/11/11 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
python正则匹配抓取豆瓣电影链接和评论代码分享
2013/12/27 Python
Ubuntu下安装PyV8
2016/03/13 Python
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
python实现k-means聚类算法
2018/02/23 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
python实现mean-shift聚类算法
2020/06/10 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
用python实现一个简单的验证码
2020/12/09 Python
python 图像增强算法实现详解
2021/01/24 Python
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
大学校园毕业自我鉴定
2014/01/15 职场文书
村干部承诺书
2014/03/28 职场文书
租赁协议书范本
2014/04/22 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
领导班子四风表现材料
2014/08/23 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
初一语文教学反思
2016/03/03 职场文书
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android