Numba jitclass 和继承
Numba jitclass and inheritance
我有一个 classes 的层次结构,我想通过使用 Numba jitclass 来加速我的代码。我已经针对一些没有 class 继承的示例测试了 @jitclass,它可以正常工作并加快代码速度。但是,如果我有 class 继承,则在编译期间发生错误。下面是演示问题的示例代码。如有任何意见和建议,我将不胜感激。现在对我来说,Numba 似乎不支持 class 继承,但我没有在文档中找到任何相关信息。
代码示例:
import numpy as np
from numba import jitclass
from numba import int32, float32
spec = [
('n', int32),
('val', float32[:]),
]
@jitclass(spec)
class Parent(object):
def __init__(self, n):
self.n = n
self.val = np.zeros(n, dtype=np.float32)
spec = [
('incr', float32),
]
@jitclass(spec)
class Child(Parent):
def __init__(self, n):
Parent.__init__(self, n)
self.incr = 2.
def func(self):
for i in xrange(0, self.n):
self.val[i] += self.incr
return self.val
par = Parent(10)
chl = Child(10)
print chl.func()
我得到的错误是:
TypeError: cannot subclass from a jitclass
目前(从 0.28.1 开始),Numba 不支持来自 jitclass
的 subclassing/inheriting。它没有在文档中说明,但错误消息非常明确。我猜将来某个时候会添加此功能,但现在它是一个限制。
我有一个 classes 的层次结构,我想通过使用 Numba jitclass 来加速我的代码。我已经针对一些没有 class 继承的示例测试了 @jitclass,它可以正常工作并加快代码速度。但是,如果我有 class 继承,则在编译期间发生错误。下面是演示问题的示例代码。如有任何意见和建议,我将不胜感激。现在对我来说,Numba 似乎不支持 class 继承,但我没有在文档中找到任何相关信息。 代码示例:
import numpy as np
from numba import jitclass
from numba import int32, float32
spec = [
('n', int32),
('val', float32[:]),
]
@jitclass(spec)
class Parent(object):
def __init__(self, n):
self.n = n
self.val = np.zeros(n, dtype=np.float32)
spec = [
('incr', float32),
]
@jitclass(spec)
class Child(Parent):
def __init__(self, n):
Parent.__init__(self, n)
self.incr = 2.
def func(self):
for i in xrange(0, self.n):
self.val[i] += self.incr
return self.val
par = Parent(10)
chl = Child(10)
print chl.func()
我得到的错误是:
TypeError: cannot subclass from a jitclass
目前(从 0.28.1 开始),Numba 不支持来自 jitclass
的 subclassing/inheriting。它没有在文档中说明,但错误消息非常明确。我猜将来某个时候会添加此功能,但现在它是一个限制。