简介
探索 python 性能优化工具, 发现了 numba. 只需要给函数加上装饰器就可以. 比 cython 和 pypy 方便多了.
numba 是什么
numba 是为了提高 numpy 速度而开发的, 使用 llvm 将 python 代码翻译为 bitcode, 并在 bitcode 外面做了一层包装, 让 python 可以调用
通过 numba 翻译的代码由于经过 llvm 优化并可在机器上直接执行, 效率将有所提高, 对海量数据处理非常有帮助
numba 可以解决什么问题
提高 numpy 速度
解决 python 在计算上的性能问题
原理
通过 llvm 编译器将 python 代码转换成机器码, 提高执行效率.
初试
环境说明
python3.6 fedora
安装
pip install numba
示例
- # 斐波那契数列
- import time
- from numba import jit
- @jit
- def fib(n):
- if n<=2 :
- return 1;
- else:
- return fib(n-1)+fib(n-2);
- start = time.time()
- fib(50)
- end = time.time()
- print("python3+numba cost_seconds:", end-start)
- # 结果. 结果很明显 numba 可以让你的 python 飞起来
python3 20.24455213546753 秒
python3+numba 0.5986552238464355 秒
文档
* 官方 / 文档
- http://numba.pydata.org/
- http://numba.pydata.org/numba-doc/latest/index.html
* 官方例子
- https://numba.pydata.org/numba-examples/* GitHub
- https://github.com/numba/numba
适用范围
操作系统: windows32/64, OS X, linux32/64
架构: x86, x86_64, ppc64le. Experimental on armv7l, armv8l (aarch64).
- GPUs: Nvidia CUDA. Experimental on AMD ROC
- CPython
Numpy1.10 以上
注意要点
numba 只适合解决 python 项目在计算上的性能问题, 否则会导致项目性能下降.
引入前最好足够测试确保使用 numba 的姿势正确
来源
来源: http://www.tuicool.com/articles/beaq222