LINUX.ORG.RU

Быстрый питон


0

0

Свежая статья Дэвида Мерца о pyrex -- языке описания си-модулей для python. Грамотно применяя статическую типизацию отдельных переменных в pyrex можно добиться существенного ускорения кода. Приводятся тесты в которых скорость исполнения программы на pyrex превосходит чистый питон в 40 и psyco почти в 6 раз.

>>> Making Python fast (ibm.com)

★★★

Проверено: Shaman007 ()

А в итоге все равно получится в 10 раз медленнее чем C.

anonymous
()

Ну и что? pyrex, pycaml... чего там только нет

zenkov ★★★
()

Неплохая эта штука - pyrex.

Позволяет использовать в одном коде, в питоновом стиле и С и питон-объекты. Добавляет отнюдь не только скорость. В питоне благодаря пайрексу появляются указатели, NULL и прочие милые вещи, которых так не достает при обычном программировании. Можно не просто обращаться к сишным функциям, а строить полноценные объекты.

Я тут с ее помощью обернул libburn. Конечно, определенный геморрой, конечно, определенные ограничения, но общая идея работает и работает неплохо.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

>> Я тут с ее помощью обернул libburn. Конечно, определенный геморрой, конечно, определенные ограничения, но общая идея работает и работает неплохо.

Называется ""полумеры". Типа "питон на ждаве". Нах, тогда такой подход. Прикинь, Авлик, если тебе придется соединить две проги - эту и с традиционным питон-синтаксисом. :-))

anonymous
()
Ответ на: комментарий от anonymous

Ну вообщето именно так она у меня и работает...

Вот, к примеру вывод списка драйвов из питона.


import libburn

const=libburn.const()

burn=libburn.cl_burn(verbosity=0)

for drive in burn.get_drives():
print drive



Основное предназначение пайрекса - обертка сишных либ для последующего использования в 100% питоновых скприптах.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

> В питоне благодаря пайрексу появляются указатели, NULL и прочие милые вещи, которых так не достает при обычном программировании. Можно не просто обращаться к сишным функциям, а строить полноценные объекты.

Спасибо, когда мне понадобятся указатели - я знаю, где лежит компилятор C.

А NULL - что это за невидаль такая? По-моему, жалкое подобие нормального None.

> Я тут с ее помощью обернул libburn. Конечно, определенный геморрой, конечно, определенные ограничения, но общая идея работает и работает неплохо.

А чем это лучше SWIG-a? Там хоть язык не надо корёжить. Что надо - пишешь на C, что надо - на нормальном языке.

anonymous
()
Ответ на: комментарий от AVL2

Для этого существует SWIG - генератор интерфейсов. И не надо язык корёжить.

В общем, посмотрел я, и не понял - не Питон и не С получается. Зачем так мучиться, не лучше ли прямо на C писать? Потому что это - явно не Питон.

anonymous
()
Ответ на: комментарий от anonymous

Я попробовал swig на том же libburn. вжик, и файл нефиговый он замутил. это хорошо. но преобразования-то ручками, ручками делать надо! кроме того, swig - отдельная либа.

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

AVL2 ★★★★★
()

Чудеса... Топик про python и почти без флейма. С этим надо что-то делать. Например, заявить что Python - лучший из современных языков программирования общего назначения.

neru
()
Ответ на: комментарий от AVL2

файл нефиговый это да, а преобразования зачем ручками и что за преобразования?

и swig ни какая не либа

anonymous
()

Pyrex, на мой взгляд, создавался не для того, чтобы с его помощью обертывать библиотеки на С (хотя он может быть использован и для этих целей). Главное его назначение - ускорить работу модуля за счет дополнительных объявлений, в определенном смысле сохраняя стиль языка.

При прочих его недостатках, он позволяет "за дешево" повышать производительность модуля при минимальных затратах.

Я полагаю, что у SWIG и Pyrex - разные сферы применения, хотя они и пересекаются между собой.

anonymous
()
Ответ на: комментарий от anonymous

test(struct **example)

и как я ему указатель на структуру или объект передам?

В pyrex - зпросто.

А что в /usr/lib swig кладет?

AVL2 ★★★★★
()
Ответ на: комментарий от AlexM

только перед этим ему файлик *.pyx надо написать

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

> Называется ""полумеры". Типа "питон на ждаве". Нах, тогда такой подход. Прикинь, Авлик, если тебе придется соединить две проги - эту и с традиционным питон-синтаксисом. :-))

ты удивишься, но модули написанные на чистом Си, на pyrex и на чистом питоне импортируются и используются абсолютно одинаково.

сравни, для примера, pickle и Cpickle из стандартной библиотеки.

Писать на чистом си нет смысла -- слишком много рутинных операций котрые с успехом может проделать pyrex -- например преобразование питон-объектов в си-типы и наоборот, увеличение/уменьшение счетчика ссылок на объект.

В результате на pyrex оборачивание некоторых си-библиотек на 50% делается sed'ом. Жаль он еще c++ не умеет.

Bsd-un ★★★
() автор топика
Ответ на: комментарий от Bsd-un

> ты удивишься, но модули написанные на чистом Си, на pyrex и на чистом > питоне импортируются и используются абсолютно одинаково.

истину глаголет бзд-ун. pygame целиком на С написан. и игрушка на питоне работает на удивление шустро.

anonymous
()
Ответ на: комментарий от Bsd-un

>В результате на pyrex оборачивание некоторых си-библиотек на 50% делается sed'ом. Жаль он еще c++ не умеет.

C++ sip умеет. он маленький и удобный

adarovsky ★★★★
()
Ответ на: комментарий от AVL2

>В питоне благодаря пайрексу появляются указатели, NULL и прочие милые вещи, которых так не достает при обычном программировании.

м-да... я то думал мы от этой милости уходим именно благодаря милым спискам питона. если же указатели, то лучше си подпрограммы использовать (или асм)

vm ★★
()
Ответ на: комментарий от vm

ну так пайрекс, это и есть сама возможность использовать в питоне С-подпрограммы. Причем в этих С подпрограммах можно использовать питоновые объекты. И описывается это все простыми питон-подобными конструкциями.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

>А что в /usr/lib swig кладет? либы которые использовались в случае _одновременного_ использования _нескольких_ языков (i.e. перл + питон +цпп) и их, кстати, в апстриме сразу устаревшими сделали, а потом и вовсе выкинули.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.