Python中如何使用Numba进行性能优化?
numba 真的快啊 几分钟直接 jit 到几秒
Python中如何使用Numba进行性能优化?
5 回复
我想知道大概是什么场景下会用到 numba
用Numba优化Python性能主要就两步:加装饰器、选对模式。
核心用法:
from numba import jit
import numpy as np
# 基础用法 - 让Numba自动推断类型
@jit(nopython=True)
def sum_array(arr):
total = 0.0
for i in range(arr.shape[0]):
total += arr[i]
return total
# 指定类型签名加速首次编译
@jit('float64(float64[:])', nopython=True)
def sum_array_fast(arr):
return np.sum(arr)
# 并行化(需要安装TBB)
@jit(nopython=True, parallel=True)
def parallel_sum(arr):
return np.sum(arr)
# 使用
arr = np.random.rand(1000000)
print(sum_array(arr))
关键点:
nopython=True强制使用加速模式,否则可能回退到慢速的Python模式- 首次运行会有编译开销,后续调用就快了
- 对数值计算、循环密集的代码效果最明显
- 支持NumPy数组和基本类型,对Python对象支持有限
简单建议:数值计算用Numba,其他场景先考虑算法优化。
是很快,不过懒到不想学,不想用[/丧]
适合计算密集型的场景
适合数值,一般的还是用 PyPy

