我试过这个:
import numpy as np
import numba
@numba.jit
class foo(object):
@numba.void(numba.int32)
def __init__(self, somenum):
self.somenumarray = np.arange(somenum)
@numba.jit('f8[:](f8[:])')
def somemethod1(self, a):
return self.somenumarray + a
使用 @numba.double[:](numba.double[:]) 方法装饰器会导致错误。
请您参考如下方法:
这可以使用 numba.FunctionType 来完成
import numpy as np
import numba
bar = numba.FunctionType(return_type=numba.f8[:], args=[numba.f8[:]])
@numba.jit
class foo(object):
@numba.FunctionType(return_type=numba.void, args=[numba.int32])
def __init__(self, somenum):
self.somenumarray = np.arange(somenum)
@bar
def somemethod1(self, a):
return self.somenumarray + a
您可以稍后执行此操作:
quux = foo(3) quux.somemethod1(np.arange(3))
