2016-10-19 47 views
1

我有一个类的层次结构,我想通过使用Numba jitclass来加速我的代码。我已经测试了一些没有类继承的例子@jitclass,它可以正常工作并加速代码。但是,如果我有类继承,编译期间发生错误。以下是展示问题的示例代码。我会非常感谢任何意见和建议。现在对我来说,Numba并不支持类继承,但我在文档中没有找到任何关于它的信息。 代码示例:Numba jitclass和继承

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 

回答

1

目前(截至0.28.1),Numba不支持子类/从jitclass继承。它没有在文档中说明,但错误信息非常明确。我猜测这种能力将在未来某个时候增加,但现在这是一个限制。