我正试图通过将其翻译成Cython来加速我的Python。它使用函数scipy. integrated .quad,该函数需要一个python可调用对象作为其参数之一。是否有任何方法来定义和传递一个函数从一个cdef语句在Cython,所以我可以使用这个?
谢谢。
是的,你只需要用一个python函数来包装这个函数。
def py_callback(a):
return c_callback(a)
cdef float c_callback(float a):
return a * a
...
scipy.integrate.quad(py_callback)
当然有一点转换过载。另一种方法是查找该函数是如何实现的。
- 它是一个C函数的包装器,尝试从pyx文件直接调用C函数(创建一个封装scipy c模块的pxd)。
- 如果是纯Python,尝试将其翻译成Python。
否则,您必须使用其他纯C积分函数,并跳过scipy函数。