Python numba jit加速计算

  • 安装
    pip install numba
  • 使用示例
    import time
    
    from numba import jit
    
    
    # 原始函数
    def python_sum(n):
        total = 0
        for i in range(n):
            total += i
        return total
    
    
    # Numba 加速版本
    @jit(nopython=True)
    def numba_sum(n):
        total = 0
        for i in range(n):
            total += i
        return 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复杂对象。

     

posted @ 2025-09-18 14:39  CJTARRR  阅读(25)  评论(0)    收藏  举报