为什么njit函数在类内部时不起作用,而在类外部时却起作用?

时间:2020-01-24 12:17:48

标签: python numba

我不明白为什么函数compute在类myclass之外时起作用,而在函数import numpy as np from numba import njit @njit def compute(length): x=np.zeros(length) for i in range(length): x[i] = i return x class myclass(): def __init__(self): self.length = 100 def Simule(self): res = compute(self.length) print(res) def Simule2(self): res = self.compute(self.length) print(res) @njit def compute(self, length): x = np.zeros(length) for i in range(length): x[i] = i return x if __name__ == "__main__": instance = myclass() instance.Simule() instance.Simule2() 之外时为什么不起作用?

firebase-authentication

1 个答案:

答案 0 :(得分:1)

该装饰器似乎无法识别装饰的马蹄莲是函数还是方法,您可以将其更改为静态方法:

import numpy as np
from numba import njit

@njit
def compute(length):
    x=np.zeros(length)
    for i in range(length):
        x[i] = i
    return x

class myclass():
    def __init__(self):
        self.length = 100

    def Simule(self):
        res = compute(self.length)
        print(res)

    def Simule2(self):
        res = self.compute(self.length)
        print(res)

    @staticmethod
    @njit
    def compute(length):
        x = np.zeros(length)
        for i in range(length):
            x[i] = i
        return x


if __name__ == "__main__":
    instance = myclass()
    instance.Simule()
    instance.Simule2()