Форум сайта python.su
0
В общем, заинтересовался я разработкой сишных модулей для питона. Во-первых, что про них почитать, кроме http://docs.python.org/release/2.7.2/extending/extending.html ? Во-вторых, будут ли такие эксты компилироваться и под винду, и под никсы? А в-третьих, хотелось бы обсудить случаи использования.
Из того, что интересует - есть ли смысл организовывать какие-либо сетевые вещи (например, работу с протоколами на низком уровне) в виде сишных либ? Реализовывать структуры данных - деревья, графы?
Товарищ Андрей Светлов, я знаю, что связка Python/C++ - ваш конек. Хочется поболтать на тему.
Офлайн
253
Enchantner1 Сходный вопрос - с++ кросс платформенный или нет?
будут ли такие эксты компилироваться и под винду, и под никсы
Enchantnerи кросплатформенность - вещи часто трудносовместимые.
работу с протоколами на низком уровне
Отредактировано (Авг. 16, 2011 22:44:39)
Офлайн
0
doza_andНу, это понятно. Я просто в основном пробовал писать именно с использованием Boost::Python под никсами, но на винде у меня чего-то не заладилось. А хочется мутить нормальные pip-пакеты для установки на любую систему, где есть сишный компилятор.
1 Сходный вопрос - с++ кросс платформенный или нет?
Ответ - зависит от того, что вы в этом c++ напишете.
doza_andНу, на уровне питона да, это практически незаметно. На уровне сей различие не такое большое, чтобы это было большой сложностью. Ну другие заголовки, но все основные синтаксисы (создание сокета, отправка данных) - одни и те же.
вещи часто трудносовместимые
Отредактировано (Авг. 17, 2011 00:03:54)
Офлайн
253
EnchantnerПод виндами проблемы. Можно ориентироваться на MSVC, но у них быстро меняется среда. у меня базовый сейчас MSVC10 и инсталляторы не могут по умолчанию им компилировать (рассчитаны на 8) пришлось править алгоритмы поиска. При этом нет никакой уверенности что микрософт не учудит опять что-то при выпуске новой версии. Явно прослеживается тенденция - ставка на C# F#… А с++ по остаточному принципу. Ядумаю что теперь порядок поиска компиляторов под виндами должен быть MingW, gcc из cygwin А потом уж MSVC
нормальные pip-пакеты для установки на любую систему,
EnchantnerА как вы думаете поступать с атакой андроидов? :)
на любую систему, где есть сишный компилятор
Офлайн
14
Если вам «исключительно для ускорения» — берите Cython. Делайте всё на Питоне. Покрывайте тестами. Когда профайлер покажет что интересное — переводите критическую часть на Cython. Тесты должны одинаково хорошо работать как на Python так и на Cython реализации. Потом придётся поддерживать обе версии. (это не трудно)
Офлайн
0
Андрей Светлов
Мне не столько для ускорения боттлнеков, сколько для исследования возможности написания программ на обоих языках одновременно. То есть это не обязательно будет Python-программа со вставками на C, но может быть, скажем, C-программа с API и логикой на питоне (как это сделано в GIMP, например).
doza_andНу, в андроиде есть SL4A, а в нем можно импортировать свои системные бандлы. При наличии cишного NDK теоретически возможность скомпилить свой такой бандл никуда не делась.
А как вы думаете поступать с атакой андроидов?
doza_andСогласен, но как быть, скажем, с инсталляторами Python-программ? Или в них уже включен, например, скомпилированный одним из GNU-компиляторов код, который просто в бинарном виде копируется, куда надо?
Ядумаю что теперь порядок поиска компиляторов под виндами должен быть MingW, gcc из cygwin А потом уж MSVC
Отредактировано (Авг. 17, 2011 08:47:43)
Офлайн
253
До NDK еще дожить надо.
EnchantnerНаверно как и с самим питоном. - поставлять и исходники и компиллированные версии. Я бы ратовал только за исходники, но многие вещи сам не могу собрать из исходников. :)
но как быть, скажем, с инсталляторами Python-программ?
Офлайн
0
doza_and
ну, кто-то же как-то собирает эти пакеты: http://www.lfd.uci.edu/~gohlke/pythonlibs/ :) тот же gevent под виндой из сорцов собрать нереально, потому что надо компилить libevent и т. д.
Офлайн
14
Для изучения — читайте все подряд. Для работы — определитесь сначала с техусловиями.
Офлайн