from numba import jit
import numpy as np
import time
# 使用 Numba 的 @jit 装饰器来加速函数执行
@jit(nopython=True) # nopython 模式可以进一步提高性能
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
# 示例数组
arr = np.random.rand(1000, 1000)
# 测试不使用 Numba 的情况
start_time = time.time()
sum_without_numba = np.sum(arr)
end_time = time.time()
print(f"Without Numba: {end_time - start_time:.6f} seconds")
# 测试使用 Numba 的情况
start_time = time.time()
sum_with_numba = sum2d(arr)
end_time = time.time()
print(f"With Numba: {end_time - start_time:.6f} seconds")
numba
、numpy
和 time
库。numba
用于加速 Python 代码,numpy
用于生成和操作数组,time
用于测量代码执行时间。@jit(nopython=True)
装饰器来加速 sum2d
函数的执行。nopython=True
表示在编译时尽量避免使用 Python 解释器,从而获得更好的性能。numpy
创建一个 1000x1000 的随机数组 arr
。通过这个示例,可以看到 Numba 在处理数值计算时能够显著提高性能。
上一篇:python svm
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站