概述

Numba 是一个面向 Python 数组和数值函数的编译器,它使您能够通过直接用 Python 编写的高性能函数来加速您的应用程序。

Numba 使用 LLVM 编译器基础设施,从纯 Python 代码生成优化过的机器码。通过几个简单的注解,面向数组且计算密集的 Python 代码可以被即时优化,达到与 C、C++ 和 Fortran 相似的性能,而无需切换语言或 Python 解释器。

Numba 的主要特性是

  • 即时代码生成(在导入时或运行时,根据用户的偏好)

  • 针对 CPU(默认)和 GPU 硬件 的原生代码生成

  • 与 Python 科学软件栈集成(得益于 Numpy)

一个以 Numpy 数组作为参数的 Numba 优化函数可能看起来像这样

@numba.jit
def sum2d(arr):
    M, N = arr.shape
    result = 0.0
    for i in range(M):
        for j in range(N):
            result += arr[i,j]
    return result