вызов функции Cython из C ++

у меня есть библиотека C ++, в которой есть оболочка Python (написанная с помощью SWIG). Эта библиотека позволяет выполнять небольшой пользовательский код (обратный вызов), например поэлементные операции с вектором. Т.е. вместо просто + вы можете выполнять любую произвольную двоичную функцию. Прямо сейчас это достигается путем принятия вызываемого объекта Python для двоичной функции и его вызова. Он работает, но примерно в 80 раз медленнее, чем код, который не должен подпрыгивать в Python на каждой итерации.

Как мне написать / построить / импортировать функцию Cython, можно передать в мою библиотеку C ++, чтобы он может быть вызван непосредственно библиотекой C ++?

Изменить: Если бы я просто придерживался C, я бы написал что-то вроде

EWise(double (*callback)(double, double))

EWise, затем callback (10, 20); или что-то подобное. Я хочу, чтобы обратный вызов был написан на Cython с использованием любого имени, которое хочет пользователь, и указатель на него должен быть каким-то образом передан в мою библиотеку C ++ через Python. Это как-то неясно.

17
задан Adam 19 April 2011 в 19:56
поделиться