Numba

✍ dations ◷ 2025-01-09 19:17:27 #Python

Numba是开源的JIT编译器,它通过llvmlite Python包,使用LLVM将Python的子集和NumPy翻译成快速的机器码。它为在CPU和GPU上并行化Python代码提供了大量选项,而经常只需要微小的代码变更。

Numba由Travis Oliphant在2012年开创并在github页面存档备份,存于互联网档案馆上活跃开发而经常有新的发行。这个计划由Anaconda公司的开发者驱动,并受到DARPA、Gordon和Betty Moore基金会、Intel、Nvidia、AMD和GitHub上的社区贡献者的支持。

Numba可以通过简单的在进行数值计算的Python函数上应用numba.jit修饰符来使用:

import numbaimport random@numba.jitdef monte_carlo_pi(n_samples: int):    acc = 0    for i in range(n_samples):        x = random.random()        y = random.random()        if (x**2 + y**2) < 1.0:            acc += 1    return 4.0 * acc / n_samples

即时编译在函数被调用时透明地进行:

>>> monte_carlo_pi(1000000)3.14

Numba的网站包含了更多的例子,还有如何从Numba获得更好的性能的信息。

Numba可以把Python函数编译成GPU代码。目前能获得二个后端:

Numba是使Python快速的方法之一,它编译包含Python和Numpy代码的特定函数。存在很多用Python进行快速数值计算的替代方式,比如Cython、TensorFlow、PyTorch、Chainer(英语:Chainer)、Pythran页面存档备份,存于互联网档案馆和PyPy。

相关