LowLevelCallable#
- class scipy.LowLevelCallable(function, user_data=None, signature=None)[Quelle]#
Callback-Funktion auf niedriger Ebene.
Einige Funktionen in SciPy nehmen Callback-Funktionen als Argumente entgegen, die entweder Python-Aufrufbare oder kompilierte Low-Level-Funktionen sein können. Die Verwendung von kompilierten Callback-Funktionen kann die Leistung etwas verbessern, indem die Verpackung von Daten in Python-Objekte vermieden wird.
Solche Low-Level-Funktionen in SciPy werden in
LowLevelCallable-Objekte verpackt, die aus Funktionszeigern, die von ctypes, cffi, Cython erhalten wurden, oder aus Python PyCapsule-Objekten erstellt werden können.Siehe auch
Funktionen, die Low-Level-Aufrufbare akzeptieren
scipy.integrate.quad,scipy.ndimage.generic_filter,scipy.ndimage.generic_filter1d,scipy.ndimage.geometric_transformAnwendungsbeispiele
Erweiterung von scipy.ndimage in C, Schnellere Integration mit Low-Level-Callback-Funktionen
- Parameter:
- function{PyCapsule, ctypes Funktionszeiger, cffi Funktionszeiger}
Callback-Funktion auf niedriger Ebene.
- user_data{PyCapsule, ctypes void Zeiger, cffi void Zeiger}
Benutzerdaten, die an die Callback-Funktion übergeben werden.
- signaturestr, optional
Signatur der Funktion. Wenn weggelassen, wird sie wenn möglich aus function ermittelt.
- Attribute:
- function
Gegebene Callback-Funktion.
- user_data
Gegebene Benutzerdaten.
- signature
Signatur der Funktion.
Methoden
from_cython(module, name[, user_data, signature])Erstellt eine Low-Level-Callback-Funktion aus einer exportierten Cython-Funktion.
Hinweise
Das Argument
functionkann eines der folgenden sein:PyCapsule, deren Name die C-Funktionssignatur enthält
ctypes Funktionszeiger
cffi Funktionszeiger
Die Signatur des Low-Level-Callbacks muss mit einer der von der Routine erwarteten übereinstimmen, an die er übergeben wird.
Wenn Low-Level-Funktionen aus einer PyCapsule erstellt werden, muss der Name der Kapsel die entsprechende Signatur im Format sein
return_type (arg1_type, arg2_type, ...)
Zum Beispiel
"void (double)" "double (double, int *, void *)"
Der Kontext einer PyCapsule, die als
functionübergeben wird, wird alsuser_dataverwendet, wenn kein expliziter Wert füruser_dataangegeben wurde.