- 安装
pip install numba - 使用示例
import timefrom numba import jit# 原始函数 def python_sum(n):total = 0for i in range(n):total += ireturn total# Numba 加速版本 @jit(nopython=True) def numba_sum(n):total = 0for i in range(n):total += ireturn total# 性能测试 n = 50000000# 第一次运行(包含编译时间) start = time.time() result1 = numba_sum(n) end = time.time() print(f"Numba 首次运行: {end - start:.6f} 秒")# 第二次运行(使用编译后的版本) start = time.time() result2 = numba_sum(n) end = time.time() print(f"Numba 缓存机器码运行: {end - start:.6f} 秒")# Python 原生版本 start = time.time() result3 = python_sum(n) end = time.time() print(f"Python 原生: {end - start:.6f} 秒")
- 说明
首次运行会编译函数代码成机器码,并将机器码缓存起来。 后续运行可以直接用缓存的机器码计算。 对于密集的数值计算,效果非常显著,甚至首次编译加计算的时间,也会比python原生计算快很多。 - 注意事项
1.jit nopython参数可以设置为False, 可以支持部分python对象操作,但是加速效果不好,不推荐使用。 2.numba jit最佳使用范围:数值计算、numpy数组操作、循环密集计算、数学函数。 3.不支持绝大部分第三方库调用、io操作、操作python复杂对象。