首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(如何) scipy.integrate.odeint加速功能评估?

问(如何) scipy.integrate.odeint加速功能评估?
EN

Stack Overflow用户
提问于 2014-03-24 11:33:49
回答 1查看 935关注 0票数 1

典型的纯python 是比本机代码慢50倍吗? (C,Fortran),如果它由简单的仿制品组成的紧密循环组成。例如,在这个scipy.odeint中使用所描述的教程时,只需编写函数就可以在纯python中集成,如下所示:

代码语言:javascript
复制
def f(y, t):
       Si = y[0]
       Zi = y[1]
       Ri = y[2]
       # the model equations (see Munz et al. 2009)
       f0 = P - B*Si*Zi - d*Si
       f1 = B*Si*Zi + G*Ri - A*Si*Zi
       f2 = d*Si + A*Si*Zi - G*Ri
       return [f0, f1, f2]

这个函数必须经过多次评估,所以考虑到odeint集成器本身是用FORTRAN/ODPACK制作的,我预计它会造成一个巨大的性能瓶颈。

它是否使用某种方法将函数f(y,t) 从python转换为本机代码?(比如f2py、scipy.weave、cython .)据我所知,odeint不需要任何C/C++或Fortran编译器,也不会增加我的python脚本的初始化时间,因此可能不使用f2py和scipy.weave。

我问这个问题是因为,也许,在我自己的代码中使用与scipy.integrate.odeint相同的方法来加速紧循环是个好主意。使用odeint甚至比使用f2py或scipy.weave更方便。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-24 11:48:31

不,它没有,odeint代码调用您的python函数而不进行任何优化。

它将您的函数封装在ode_function (参见这里)中,然后使用call_python_function调用您的python函数。然后,c函数ode_function将由odepack模块使用。

如果热衷于并支持python到C代码转换/加速的ODE/PDE集成器,请查看pydelay (链接)。实际上使用的是weave。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22608223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档