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))

关键点:

  1. nopython=True 强制使用加速模式,否则可能回退到慢速的Python模式
  2. 首次运行会有编译开销,后续调用就快了
  3. 对数值计算、循环密集的代码效果最明显
  4. 支持NumPy数组和基本类型,对Python对象支持有限

简单建议:数值计算用Numba,其他场景先考虑算法优化。

是很快,不过懒到不想学,不想用[/丧]

适合计算密集型的场景

适合数值,一般的还是用 PyPy

回到顶部