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