使用numba的jit编译器

时间:2017-12-12 10:34:58

标签: python compiler-errors jit numba

我正在尝试使用numba中的jit编译器编译我的python代码。但是,我一直得到'模块'不可调用的错误。如何正确调用此装饰器?我首先安装numba,然后将其导入为jit。请参阅下面的代码。

!conda install -y numba
import numba as jit

@jit(nopython=True)
def calltree_explicit(S0, K, T, r, sigma, delta, N):
    deltaT = T/float(N)
    u = np.exp(sigma * np.sqrt(deltaT))
    d = 1/u
    p = (np.exp((r-delta)*deltaT) - d)/(u-d)   
    pstar = np.exp(-(r-delta)*deltaT)*p*u
    a = np.ceil(N/2+np.log(K/S0)/(2*np.log(u)))
    return np.exp(-delta*T)*S0*binom.sf(a-1, N, pstar)-binom.sf(a-1, N, 
    p)*np.exp(-r*T)*K

这应该编译我的代码以使其更快

但我收到了

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-31-3cc5b3c83b9f> in <module>()
----> 1 @jit(nopython=True)
      2 def calltree_explicit(S0, K, T, r, sigma, delta, N):
      3     deltaT = T/float(N)
      4     u = np.exp(sigma * np.sqrt(deltaT))
      5     d = 1/u

TypeError: 'module' object is not callable

1 个答案:

答案 0 :(得分:0)

TypeError:'module'对象不可调用意味着当它实际上不是函数或方法时你试图使用类似函数的东西。你有numba导入的问题,也许你应该尝试

from numba import jit