scipy.

LowLevelCallable#

класс scipy.LowLevelCallable(функция, user_data=None, сигнатура=None)[источник]#

Функция обратного вызова низкого уровня.

Некоторые функции в SciPy принимают в качестве аргументов функции обратного вызова, которые могут быть либо вызываемыми объектами Python, либо скомпилированными функциями низкого уровня. Использование скомпилированных функций обратного вызова может несколько улучшить производительность, избегая обертывания данных в объекты Python.

Такие низкоуровневые функции в SciPy обёрнуты в LowLevelCallable объекты, которые могут быть созданы из указателей функций, полученных из ctypes, cffi, Cython или содержащихся в Python PyCapsule объекты.

Параметры:
функция{PyCapsule, указатель на функцию ctypes, указатель на функцию cffi}

Функция обратного вызова низкого уровня.

user_data{PyCapsule, указатель void ctypes, указатель void cffi}

Пользовательские данные для передачи в функцию обратного вызова.

сигнатураstr, optional

Сигнатура функции. Если опущена, определяется из функция, если возможно.

Атрибуты:
функция

Предоставлена функция обратного вызова.

user_data

Пользовательские данные.

сигнатура

Сигнатура функции.

Методы

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

Создать низкоуровневую функцию обратного вызова из экспортированной функции Cython.

Примечания

Аргумент function может быть одним из:

  • PyCapsule, имя которого содержит сигнатуру C-функции

  • указатель функции ctypes

  • указатель функции cffi

Сигнатура низкоуровневого обратного вызова должна соответствовать одной из ожидаемых подпрограммой, которой он передается.

При создании низкоуровневых функций из PyCapsule, имя капсулы должно быть соответствующей сигнатурой в формате:

return_type (arg1_type, arg2_type, ...)

Например:

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

Контекст PyCapsule, переданного как function используется как user_data, если явное значение для user_data не был указан.