@nb.jit
装饰器:
@nb.jit
是 Numba 库的装饰器,用于提供即时编译(Just-in-Time Compilation)以加速函数执行。它可以根据函数的输入类型动态生成高效的机器码。
下面是使用 nb.jit
装饰器的基本步骤:
1. 导入 nb.jit
:
首先,需要导入 nb.jit
装饰器。可以使用以下代码导入:
import numba as nb
2.装饰函数:
在要进行即时编译的函数定义之前,使用 @nb.jit
装饰器对函数进行修饰:
@nb.jit
def my_function(arg1, arg2):
# 函数体
# ...
在上述示例中,函数 my_function
被 @nb.jit
装饰器修饰,表示对该函数进行即时编译。
3.使用即时编译函数:
在装饰后的函数可以像普通函数一样被调用和使用。例如:
result = my_function(arg1, arg2)
举个例子:
import numba as nb
import time
# 不使用 nb.jit 装饰器
def compute_sum_without_jit(n):
result = 0
for i in range(n):
result += i
return result
# 使用 nb.jit 装饰器
@nb.jit
def compute_sum_with_jit(n):
result = 0
for i in range(n):
result += i
return result
# 测试函数执行时间
n = 10**7
start_time = time.time()
result1 = compute_sum_without_jit(n)
end_time = time.time()
execution_time1 = end_time - start_time
start_time = time.time()
result2 = compute_sum_with_jit(n)
end_time = time.time()
execution_time2 = end_time - start_time
print("结果是否一致:", result1 == result2)
print("不使用 nb.jit 装饰器的执行时间:", execution_time1)
print("使用 nb.jit 装饰器的执行时间:", execution_time2)
output:
结果是否一致: True
不使用 nb.jit 装饰器的执行时间: 0.5080041885375977
使用 nb.jit 装饰器的执行时间: 0.056958913803100586
直接加速10倍