Найти - Пользователи
Полная версия: Python - C-extensions
Начало » Python для экспертов » Python - C-extensions
1
Enchantner
В общем, заинтересовался я разработкой сишных модулей для питона. Во-первых, что про них почитать, кроме http://docs.python.org/release/2.7.2/extending/extending.html ? Во-вторых, будут ли такие эксты компилироваться и под винду, и под никсы? А в-третьих, хотелось бы обсудить случаи использования.

Из того, что интересует - есть ли смысл организовывать какие-либо сетевые вещи (например, работу с протоколами на низком уровне) в виде сишных либ? Реализовывать структуры данных - деревья, графы?

Товарищ Андрей Светлов, я знаю, что связка Python/C++ - ваш конек. Хочется поболтать на тему.
doza_and
Enchantner
будут ли такие эксты компилироваться и под винду, и под никсы
1 Сходный вопрос - с++ кросс платформенный или нет?
Ответ - зависит от того, что вы в этом c++ напишете.
Причем я отвечу тоже самое и для c# и для java которые считаются кросплатформенными.
В области ваших интересов можно взять boost asio и будет он вам кросплатформенным.

2 Об использовании. Чаще всего это делаю когда привязывается или используется сторонний код (уже готовый). След по частоте - отладка и проверка нашего сишного кода (заказчик получает c++ frotran и прочее) а мы тестируем с использованием python. И наконец критические по времени выполнения части (естественно самописные).

3 думаю что начать проще всего с модуля ctypes

p.s.
Enchantner
работу с протоколами на низком уровне
и кросплатформенность - вещи часто трудносовместимые.
Enchantner
doza_and
1 Сходный вопрос - с++ кросс платформенный или нет?
Ответ - зависит от того, что вы в этом c++ напишете.
Ну, это понятно. Я просто в основном пробовал писать именно с использованием Boost::Python под никсами, но на винде у меня чего-то не заладилось. А хочется мутить нормальные pip-пакеты для установки на любую систему, где есть сишный компилятор.
doza_and
вещи часто трудносовместимые
Ну, на уровне питона да, это практически незаметно. На уровне сей различие не такое большое, чтобы это было большой сложностью. Ну другие заголовки, но все основные синтаксисы (создание сокета, отправка данных) - одни и те же.
doza_and
Enchantner
нормальные pip-пакеты для установки на любую систему,
Под виндами проблемы. Можно ориентироваться на MSVC, но у них быстро меняется среда. у меня базовый сейчас MSVC10 и инсталляторы не могут по умолчанию им компилировать (рассчитаны на 8) пришлось править алгоритмы поиска. При этом нет никакой уверенности что микрософт не учудит опять что-то при выпуске новой версии. Явно прослеживается тенденция - ставка на C# F#… А с++ по остаточному принципу. Ядумаю что теперь порядок поиска компиляторов под виндами должен быть MingW, gcc из cygwin А потом уж MSVC

Enchantner
на любую систему, где есть сишный компилятор
А как вы думаете поступать с атакой андроидов? :)
Андрей Светлов
Если вам «исключительно для ускорения» — берите Cython. Делайте всё на Питоне. Покрывайте тестами. Когда профайлер покажет что интересное — переводите критическую часть на Cython. Тесты должны одинаково хорошо работать как на Python так и на Cython реализации. Потом придётся поддерживать обе версии. (это не трудно)
Enchantner
Андрей Светлов
Мне не столько для ускорения боттлнеков, сколько для исследования возможности написания программ на обоих языках одновременно. То есть это не обязательно будет Python-программа со вставками на C, но может быть, скажем, C-программа с API и логикой на питоне (как это сделано в GIMP, например).
doza_and
А как вы думаете поступать с атакой андроидов?
Ну, в андроиде есть SL4A, а в нем можно импортировать свои системные бандлы. При наличии cишного NDK теоретически возможность скомпилить свой такой бандл никуда не делась.
doza_and
Ядумаю что теперь порядок поиска компиляторов под виндами должен быть MingW, gcc из cygwin А потом уж MSVC
Согласен, но как быть, скажем, с инсталляторами Python-программ? Или в них уже включен, например, скомпилированный одним из GNU-компиляторов код, который просто в бинарном виде копируется, куда надо?
doza_and
До NDK еще дожить надо.

Enchantner
но как быть, скажем, с инсталляторами Python-программ?
Наверно как и с самим питоном. - поставлять и исходники и компиллированные версии. Я бы ратовал только за исходники, но многие вещи сам не могу собрать из исходников. :)
Enchantner
doza_and
ну, кто-то же как-то собирает эти пакеты: http://www.lfd.uci.edu/~gohlke/pythonlibs/ :) тот же gevent под виндой из сорцов собрать нереально, потому что надо компилить libevent и т. д.
Андрей Светлов
Для изучения — читайте все подряд. Для работы — определитесь сначала с техусловиями.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB