Я использую стабильную версию Numba 0.30.1.Как использовать numba для функции-члена класса?
Я могу это сделать:
import numba as nb
@nb.jit("void(f8[:])",nopython=True)
def complicated(x):
for a in x:
b = a**2.+a**3.
в качестве тестового примера, и убыстрение огромна. Но я не знаю, как действовать, если мне нужно ускорить функцию внутри класса.
import numba as nb
def myClass(object):
def __init__(self):
self.k = 1
#@nb.jit(???,nopython=True)
def complicated(self,x):
for a in x:
b = a**2.+a**3.+self.k
Какой тип numba я использую для объекта self
? Мне нужно иметь эту функцию внутри класса, так как ей нужно получить доступ к переменной-члену.
Как насчет [ 'jitclass'] (http://numba.pydata.org/numba-doc/dev/user /jitclass.html)? Я не думаю, что в противном случае можно избежать «обхода объекта», учитывая, что 'self' по определению является _объектом_. – MSeifert
И что будет делать 'b = a ** 2. + a ** 3. + self.k', если вы сразу же перепишете его в следующем цикле? – MSeifert
'self.k' просто для того, чтобы схематически показать, что мне нужно будет вызывать переменные-члены и не может просто иметь функцию вне класса – dbrane