python - 在 numba jitclass 中声明变量

标签 python numba

当我尝试导入以下 jitclass 时,我在字典上收到 KeyError:

from numba import jitclass, float64

spec = [('n', float64),
        ('w', float64),
        ('a', float64)]

@jitclass(spec)
class foo:

    def __init__(self,n,w):

        self.n = n
        self.w = w

    def foo2(self):

        a = self.n*self.w

        return a + 1.

我不明白错误从何而来。 numba 文档不足以解释事情。我需要所有变量都是类变量吗?

最佳答案

jitclass需要继承object:

from numba import jitclass, float64

spec = [('n', float64),
        ('w', float64),
        ('a', float64)]

@jitclass(spec)
class foo(object):

    def __init__(self,n,w):

        self.n = n
        self.w = w

    def foo2(self):

        a = self.n*self.w

        return a + 1.

文档中似乎没有提到这一点,但示例是这样编写的。

关于python - 在 numba jitclass 中声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40516640/

相关文章:

python - 尝试编写一个 Python/pandas 函数来更新特定列中等于 0 的行?

python - 直方图配置

数组中的 Python Numba 值

python - 为什么这个简单附加函数的 Cython 实现比 Numba 慢?

python - .gitignore 不忽略文件 Django

python - 与新模型中多种类型(多态性)的关系

python - 如何在线程完成时获取结果?

python - 将 numpy.bmat 与 numba 一起使用

python - 如何确定 numba 的 prange 是否真的正常工作?

python - 将 Python 加速器(Cython、Numba、f2py)与 Numpy einsum 进行比较