Tôi đang sử dụng phiên bản ổn định của Numba 0.30.1.Làm cách nào để sử dụng numba trên một hàm thành viên của một lớp?
tôi có thể làm điều này:
import numba as nb
@nb.jit("void(f8[:])",nopython=True)
def complicated(x):
for a in x:
b = a**2.+a**3.
như một trường hợp thử nghiệm, và tăng tốc là rất lớn. Nhưng tôi không biết làm thế nào để tiến hành nếu tôi cần tăng tốc một hàm bên trong một lớp.
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
Tôi nên sử dụng loại numba nào cho đối tượng self
? Tôi cần phải có hàm này bên trong một lớp vì nó cần truy cập vào biến thành viên.
gì về một [ 'jitclass'] (http://numba.pydata.org/numba-doc/dev/user /jitclass.html)? Tôi không nghĩ nó có thể tránh được "sự phản đối đối tượng" cho rằng 'self' được định nghĩa là _object_. – MSeifert
Ngoài ra, 'b = a ** 2. + a ** 3. + self.k' sẽ đạt được điều gì khi bạn lập tức ghi đè lên nó trong vòng lặp tiếp theo? – MSeifert
'self.k' chỉ để hiển thị sơ đồ rằng tôi sẽ cần gọi các biến thành viên, và không thể chỉ có hàm bên ngoài lớp – dbrane