scipy.

LowLevelCallable#

class scipy.LowLevelCallable(function, user_data=None, signature=None)[源代码]#

底层回调函数。

SciPy 中的一些函数接受回调函数作为参数,这些回调函数可以是 Python 可调用对象或底层编译函数。使用编译的回调函数可以通过避免将数据包装在 Python 对象中来在一定程度上提高性能。

SciPy 中的此类底层函数包装在 LowLevelCallable 对象中,这些对象可以从通过 ctypes、cffi、Cython 获得的函数指针或包含在 Python PyCapsule 对象中的函数指针构建。

参数:
function{PyCapsule, ctypes 函数指针, cffi 函数指针}

底层回调函数。

user_data{PyCapsule, ctypes void 指针, cffi void 指针}

传递给回调函数的用户数据。

signaturestr,可选

函数的签名。如果省略,则尽可能从 function 确定。

说明

参数 function 可以是以下之一

  • PyCapsule,其名称包含 C 函数签名

  • ctypes 函数指针

  • cffi 函数指针

底层回调的签名必须与传递给它的例程所期望的签名之一匹配。

如果从 PyCapsule 构建底层函数,则胶囊的名称必须是相应的签名,格式为

return_type (arg1_type, arg2_type, ...)

例如

"void (double)"
"double (double, int *, void *)"

如果未给出 user_data 的显式值,则作为 function 传入的 PyCapsule 的上下文将用作 user_data

属性:
function

给定的回调函数。

user_data

给定的用户数据。

signature

函数的签名。

方法

from_cython(module, name[, user_data, signature])

从导出的 Cython 函数创建底层回调函数。