Comments 8
• сложно реализовать чистым Python программистам, да и не им тоже… (по мне самое простое через ctypes)
Полностью с вами согласен. Если python модуль и принимает функции библиотеки как родные, но сложность создания библиотеки, как по мне, намного превышает сложность написания python кода для ctypes.
• модуль(библиотека) будет только для Python
И это тоже мне кажется важно. В случае ctypes, все нюансы связи пишутся в python модуле, что позволяет создать стандартную библиотеку, которую можно потом использовать в любых проектах, как на python, так и на C++, или любых других языках, позволяющих подключать внешние библиотеки.
Часа за 3 разобрался как функции и внешние переменные сделать, и еще часов 9 ушло что бы со структурой разобраться.
Спасибо за статью.
На сколько я понимаю, основной плюс данного метода — это то, что можно ускорить узкие места написанного Python-кода, реализовав его части на C.
По сравнению с другими методами (например, по сравнению с ctypes) этот не имеет накладных расходов на преобразование данных и его можно применять для небольших, часто вызываемых функций, с бешовной интеграцией в Python код.
ctypes же лучше использовать для выполнения каких-то достаточно тяжёлых, относительно продолжительных вычислений, когда наладные расходы на преобразование не существенны. Основной плюс в том, что можно использовать существующую библиотеку.
И ещё, множество встроенных (и сторонних) функций и других объектов Python на самом деле написаны на С с использованием Python/C API, что делает их эффективными.
Простите за некоторое капитанство, давно интересуюсь темой, но начать разбираться самому не хватает духу и времени. Надеюсь, статья послужит толчком.
Если я в чем-то ошибаюсь — поправьте, пожалуйста.
P.S. часто использующие Python/C API для ускорения Python — поделитесь здесь своим опытом, пожалуйста.
На сколько я понимаю, основной плюс данного метода — это то, что можно ускорить узкие места написанного Python-кода, реализовав его части на C.
По сравнению с другими методами (например, по сравнению с ctypes) этот не имеет накладных расходов на преобразование данных и его можно применять для небольших, часто вызываемых функций, с бешовной интеграцией в Python код.
ctypes же лучше использовать для выполнения каких-то достаточно тяжёлых, относительно продолжительных вычислений, когда наладные расходы на преобразование не существенны. Основной плюс в том, что можно использовать существующую библиотеку.
И ещё, множество встроенных (и сторонних) функций и других объектов Python на самом деле написаны на С с использованием Python/C API, что делает их эффективными.
Простите за некоторое капитанство, давно интересуюсь темой, но начать разбираться самому не хватает духу и времени. Надеюсь, статья послужит толчком.
Если я в чем-то ошибаюсь — поправьте, пожалуйста.
P.S. часто использующие Python/C API для ускорения Python — поделитесь здесь своим опытом, пожалуйста.
Статьи про Cython и Boost.Python будут? На фоне этих технологий написание чистого C API выглядит абсолютно неразумной тратой времени и несут чисто академическую ценность, как мне кажется.
UFO just landed and posted this here
Sign up to leave a comment.
C/C++ из Python (C API)