Numba 是一个用于加速 Python 代码的 JIT 编译器,它支持并行计算,可以显著提高性能。要在 Numba 中进行并行计算,你可以使用以下几个方法:
-
使用
@njit
装饰器:@njit
装饰器可以将 Python 函数编译为高效的机器码。默认情况下,Numba 会自动并行化这些函数。例如:from numba import njit @njit def parallel_sum(arr): return sum(arr) arr = [1, 2, 3, 4, 5] result = parallel_sum(arr) print(result) # 输出 15
-
使用
prange
函数:prange
是 Numba 提供的一个用于并行循环的函数。它允许你指定并行任务的数量。例如:from numba import njit, prange @njit(parallel=True) def parallel_sum_prange(arr): total = 0 for i in prange(len(arr)): total += arr[i] return total arr = [1, 2, 3, 4, 5] result = parallel_sum_prange(arr) print(result) # 输出 15
在这个例子中,
prange(len(arr))
会自动并行化循环,从而实现并行计算。 -
使用
numba.cuda
模块: Numba 还提供了一个用于 GPU 并行计算的模块numba.cuda
。你可以使用这个模块将 Python 代码转换为 CUDA 核函数,然后在 GPU 上并行执行。例如:from numba import cuda @cuda.jit def parallel_sum_cuda(arr, result): i = cuda.grid(1) if i < len(arr): result[i] = arr[i] arr = [1, 2, 3, 4, 5] result = [0] * len(arr) parallel_sum_cuda[1, len(arr)](arr, result) print(result) # 输出 [1, 2, 3, 4, 5]
在这个例子中,
parallel_sum_cuda
是一个 CUDA 核函数,它可以在 GPU 上并行执行,从而加速计算。
通过这些方法,你可以在 Numba 中实现并行计算,从而提高 Python 代码的性能。