这篇文章主要介绍了如何使用numba对Python运算加速,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
有时候需要比较大的计算量,这个时候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运算加速”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。