我一直在使用numba加速一些循环获得相当不错的结果。而不是及时编译代码(需要一些时间),我如何预编译代码?
这是一个例子:
import numba as nb
import numpy as np
import time.time()
Nk = 5
Nl = 6
Nx = 7
Ny = 8
A = np.random.rand(Nk, Nl, Nx, Ny)
@nb.jit(nopython=True)
def Loop( A, X, Y ):
Nk = A.shape[0]
Nl = A.shape[1]
Nx = A.shape[2]
Ny = A.shape[3]
for ik in range(Nk):
for il in range(Nl):
for ix in range(Nx):
for iy in range(Ny):
Y[ik, il] += A[ik, il, ix, iy]*X[ix,iy]
return Y
Y = np.zeros([Nk, Nl])
X = np.random.rand(Nx, Ny)
Y = Loop( A, X , Y )
我想要的是以某种方式保存已编译的函数,因此我不需要每次都编译它。
答案 0 :(得分:1)
原则上你有pycc
,但截至今天(numba 0.17)the API is not stable:
提前编译的API不稳定。喜欢冒险的用户仍然可以尝试作为Numba的一部分安装的
pycc
实用程序。
然而,熟练的读者可以提取一些信息from the source itself。