2016-10-19 78 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繼承。它沒有在文檔中說明,但錯誤信息非常明確。我猜測這種能力將在未來某個時候增加,但現在這是一個限制。