Есть ли преимущества в использовании интерфейса Python / C вместо Cython?

Я хочу расширить python и numpy, написав некоторые модули на C или C ++, используя BLAS и LAPACK. Я также хочу иметь возможность распространять код как отдельные библиотеки C / C ++. Я бы хотел, чтобы в этих библиотеках использовались числа с плавающей запятой как одинарной, так и двойной точности. Некоторые примеры функций, которые я напишу, - это сопряженный градиент для решения линейных систем или ускоренные методы первого порядка. Некоторым функциям потребуется вызывать функцию Python из кода C / C ++.

Немного поиграв с API Python / C и API Numpy / C, я обнаружил, что многие люди выступают за использование вместо этого Cython (см. пример этот вопрос или этот ). Я не эксперт по Cython, но мне кажется, что для некоторых случаев вам все равно нужно использовать Numpy / C API и знать, как он работает. Учитывая тот факт, что у меня уже есть (немного) знания о Python / C API и ничего о Cython, мне было интересно, имеет ли смысл продолжать использовать Python / C API, и при использовании этого API есть некоторые преимущества перед Cython. В будущем я обязательно буду разрабатывать некоторые вещи, не связанные с численными вычислениями, поэтому этот вопрос касается не только numpy. Что мне нравится в API Python / C, так это то, что я узнал кое-что о том, как работает интерпретатор Python.

Спасибо.

44
задан Community 23 May 2017 в 12:25
поделиться