【问题标题】:Numba jitclass and inheritanceNumba jitclass 和继承
【发布时间】:2016-10-19 06:12:33
【问题描述】:

我有一个类层次结构,我想通过使用 Numba jitclass 来加速我的代码。我已经为一些没有类继承的示例测试了@jitclass,它可以正常工作并加快代码速度。但是,如果我有类继承,则会在编译期间发生错误。下面是演示问题的示例代码。我将非常感谢任何 cmets 和建议。现在对我来说,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

【问题讨论】:

    标签: python inheritance numba


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 2019-06-07
    相关资源
    最近更新 更多