python类实例作为另一个类属性_当类的属性包含另一个类实例时,如何指定numbajitclass?...

我尝试使用numba来提高scipy.integrate.odeint.

为此,我必须使用@nb.jit公司(nopython=True)用于定义ODE系统的函数。但是,这个函数必须在我的程序中使用另一个python类实例作为参数。我还得在课堂上@nb.吉特班(规范)具有适当的规范。这一切都很好,直到我发现一个严重的问题:类的规范包含另一种类型的类实例作为它的方法。我的代码如下。在import numba as nb

from scipy.integrate import odeint

spec1=[("hi", nb.i4)]

@nb.jitclass(spec1)

class Hi(object):

def __init__(self):

self.hi = 0

spec2=[("dummy", nb.i4), ("dummy1", nb.i4)]

@nb.jitclass(spec2)

class Dummy(object):

def __init__(self, anotherClassInstance):

self.dummy = 0

self.dummy1 = anotherClassInstance

class A:

def __init__(self, someClassInstance):

self.a1 = someClassInstance

def odeSystem(self, x, t):

return _odeSystem(x, t, self.a1)

def odeSolve(self, iValues, ts):

sol = odeint(self.odeSystem, iValues, ts)

return sol

@nb.jit(nopython=True)

def _odeSystem(x, t, someClassInstance):

return 1-x

if __name__ == "__main__":

c = Hi()

b = Dummy(c)

a = A(b)

print a.odeSolve(0.5, range(0, 10))

小结:

所以这里的“A级”是我的颂歌解算器。在要用numba编译方法“odeSystem”,它不能是类方法。所以我在类“uodesystem”之外做了另一个函数。

然而不幸的是,我的odeSystem必须有一个类实例作为参数。因此,我使用@jitclass正确编译类实例参数。

我又遇到了另一个问题,这个类“Dummy”还将另一种类型的类实例作为其属性之一。我不知道如何设置这个类的“规格”。我试过用“dummy1”这个词nb.类型(嗨)“但是没用。

请帮帮我。提前谢谢。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值