典型的纯python 是比本机代码慢50倍吗? (C,Fortran),如果它由简单的仿制品组成的紧密循环组成。例如,在这个scipy.odeint中使用所描述的教程时,只需编写函数就可以在纯python中集成,如下所示:
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更方便。
https://stackoverflow.com/questions/22608223
复制相似问题