Как стать автором
Обновить

Комментарии 8

• сложно реализовать чистым Python программистам, да и не им тоже… (по мне самое простое через ctypes)

Полностью с вами согласен. Если python модуль и принимает функции библиотеки как родные, но сложность создания библиотеки, как по мне, намного превышает сложность написания python кода для ctypes.
• модуль(библиотека) будет только для Python

И это тоже мне кажется важно. В случае ctypes, все нюансы связи пишутся в python модуле, что позволяет создать стандартную библиотеку, которую можно потом использовать в любых проектах, как на python, так и на C++, или любых других языках, позволяющих подключать внешние библиотеки.
Часа за 3 разобрался как функции и внешние переменные сделать, и еще часов 9 ушло что бы со структурой разобраться.
Ну осилить можно все при желании :)
Тут наверно стоит исходить из назначения библиотеки.
Нужна универсальность — пишем стандартную библиотеку под ctypes.
Нужна скорость — разбираемся с C API, так как скорость работы тут наверно самое показательное.
Спасибо за статью.
На сколько я понимаю, основной плюс данного метода — это то, что можно ускорить узкие места написанного Python-кода, реализовав его части на C.
По сравнению с другими методами (например, по сравнению с ctypes) этот не имеет накладных расходов на преобразование данных и его можно применять для небольших, часто вызываемых функций, с бешовной интеграцией в Python код.
ctypes же лучше использовать для выполнения каких-то достаточно тяжёлых, относительно продолжительных вычислений, когда наладные расходы на преобразование не существенны. Основной плюс в том, что можно использовать существующую библиотеку.
И ещё, множество встроенных (и сторонних) функций и других объектов Python на самом деле написаны на С с использованием Python/C API, что делает их эффективными.

Простите за некоторое капитанство, давно интересуюсь темой, но начать разбираться самому не хватает духу и времени. Надеюсь, статья послужит толчком.

Если я в чем-то ошибаюсь — поправьте, пожалуйста.

P.S. часто использующие Python/C API для ускорения Python — поделитесь здесь своим опытом, пожалуйста.
Все так.
Статьи про Cython и Boost.Python будут? На фоне этих технологий написание чистого C API выглядит абсолютно неразумной тратой времени и несут чисто академическую ценность, как мне кажется.
Пока не знаю, может если не лень будет через недельку другую займусь.
Этим вопросом занялся от нечего делать )
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории