SciPy的具有接受调用执行某些操作的Python中的许多功能。 特别是,我有一个数学优化功能工作scipy.optimize.leastsq
接受赎回为目标函数参数一个Python。 该目标函数可以通过调用leastsq
在最小化过程很多次。
我的分析表明,大量的时间都花在这个目标函数。 我加快了使用用Cython功能的某些部分。 但是,函数本身仍然是一个Python函数,把它反复(如leastsq
一样)具有一些开销。
我想我可以得到速度的进一步增加,如果函数是用Cython功能(使用cdef
而不是def
)。 所以,我把我的电话给leastsq
在用Cython扩展中,并通过一个用Cython目标函数它。 但是,当我这样做,我得到的编译错误 leastsq
电话:
Cannot convert 'object (object, object, object)' to Python object
有没有办法通过一个用Cython函数作为参数传递给那些需要蟒蛇可调用这些功能SciPy的?
或者说,在我的情况, 有没有什么办法来访问底层 leastsq
实施并通过用Cython目标函数呢?