У меня есть библиотека С++ с оболочкой Python (написанная с помощью SWIG). Эта библиотека позволяет выполнять небольшой пользовательский код (обратный вызов), такой как элементарные операции над вектором. То есть вместо просто + вы можете делать любую произвольную двоичную функцию. Сейчас это достигается путем принятия вызываемого объекта Python для двоичной функции и вызова его. Он работает, но примерно в 80 раз медленнее кода, который не должен подпрыгивать вверх и вниз на Python на каждой итерации.
Как мне написать/построить/импортировать функцию Cython можно передать в мою библиотеку С++, чтобы она могла быть вызвана непосредственно библиотекой С++?
Edit: Если бы я просто придерживался C, я бы написал что-то вроде
EWise(double (*callback)(double, double))
EWise будет тогда callback(10, 20);
или таковым. Я хочу, чтобы callback
записывался в Cython, используя любое имя, которое хочет пользователь, и указатель на него должен быть передан в мою библиотеку С++ через Python. Это почему-то неясно.