我正在尝试通过将其转换为 Cython 来加速我的 Python。它使用函数 scipy.integrate.quad,它需要一个可调用的 Python 作为其参数之一。有什么方法可以在 Cython 的 cdef 语句中定义和传递函数,以便我可以使用它?
谢谢。
我正在尝试通过将其转换为 Cython 来加速我的 Python。它使用函数 scipy.integrate.quad,它需要一个可调用的 Python 作为其参数之一。有什么方法可以在 Cython 的 cdef 语句中定义和传递函数,以便我可以使用它?
谢谢。
是的,您只需使用 python 函数包装该函数。
def py_callback(a):
return c_callback(a)
cdef float c_callback(float a):
return a * a
...
scipy.integrate.quad(py_callback)
当然有一点转换过载。另一种方法是查看该功能是如何实现的。
否则,您必须使用其他一些纯 C 集成函数并跳过 scipy 函数。