【发布时间】:2011-10-13 16:39:34
【问题描述】:
我正在尝试通过将 Python 翻译成 Cython 来加速它。它使用函数 scipy.integrate.quad,它需要一个可调用的 Python 作为其参数之一。有什么方法可以在 Cython 的 cdef 语句中定义和传递函数,以便我可以使用它?
谢谢。
【问题讨论】:
标签: python function scipy cython numerical-integration
我正在尝试通过将 Python 翻译成 Cython 来加速它。它使用函数 scipy.integrate.quad,它需要一个可调用的 Python 作为其参数之一。有什么方法可以在 Cython 的 cdef 语句中定义和传递函数,以便我可以使用它?
谢谢。
【问题讨论】:
标签: python function scipy cython numerical-integration
是的,你只需要用 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 函数。
【讨论】: