Scipy 有许多函数可以接受 python 可调用来执行某些操作。特别是,我正在使用一个数学优化函数scipy.optimize.leastsq
,该函数接受 Python 可调用作为目标函数参数。leastsq
在最小化过程中可以多次调用此目标函数。
我的分析表明,很多时间都花在了这个目标函数上。我已经使用 Cython 加速了该功能的某些部分。但是,该函数本身仍然是一个 Python 函数,并且重复调用它(就像leastsq
这样)有一些开销。
cdef
我认为如果该函数是 Cython 函数(使用而不是) ,我可以进一步提高速度def
。所以我把我的电话leastsq
放在 Cython 扩展里面,并把一个 Cython 目标函数传递给它。但是当我这样做时,我在调用时遇到编译错误: leastsq
Cannot convert 'object (object, object, object)' to Python object
有没有办法将 Cython 函数作为参数传递给这些需要 python 可调用对象的 Scipy 函数?
或者,就我而言,有没有办法访问底层 leastsq
实现并将 Cython 目标函数传递给它?