Numba jitclass和继承

时间:2016-10-19 06:12:34

标签: python inheritance numba

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

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 :(得分:1)

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