LINUX.ORG.RU
$ cat erf.i
%module erf
#include <math.h>
double erf(double);
$ swig -o erf_wrap.c -python erf.i
$ gcc -o erf_wrap.os -c -fPIC -I/usr/include/python2.6 erf_wrap.c
$ gcc -o _erf.so -shared erf_wrap.os
from erf import erf
print erf(0.42) #0.44746761842602528
Donnie_Darko
()
Ответ на: комментарий от trashymichael

в таком виде нельзя сделать erf(X), если X — np.массив

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

thx, не знал про такую возможность. те ты просто используешь функцию из C в питоне? скажи, а фортран-код из питона возможно использовать?

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

>фортран-код из питона возможно использовать?

про фортран ничего не знаю.

те ты просто используешь функцию из C в питоне?


да, man swig (http://www.swig.org/)

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

Осмелюсь предположить, что никакой разницы между импортом С и фортрана нету, поэтому асильте первые 4 стр. статьи по ссылке и гляньте мануал свига как именно цеплять фортран (типа swig -fortran скорей всего ;-)

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

> ради справедливости надо сказать, что еще есть Boost::Python, SIP и трольтеховский Shiboken

Терли уже на ЛОРе и весьма активно. SWIG лучше всего подходит для лентяев (если нет сильных извратов), меньше всего писать. Если с извратами или хочется чистоты и красоты стиля то таки да, есть варианты...

Еще мб SIP умеет по дефолту тянуть все автоматом из хидеров, вот забыл.

AIv ★★★★★
()

Хм, у меня она и в 2.7.1 есть.

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

Скорость ЧЕГО? Если скорость разработки - то оч хорошо подходит. Если скорость исполнения - то это довольно смешно (тормоза питона гарантированно перекроют все накладные расходы свига).

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

> а недостатки какие?

Генерится ..._wrap.cxx который толстый и некузявый - но с ним работает компилятор, ему пофик. Всякие хитрые конструкции С++ (напр. особо изощренное испольщование шаблонов, некоторые вычисления констант) свиг понимает плохо (или не понимает вообще) - лечится при помощи #ifndef. В питоне импортированные классы имеют двольно нестандартную структуру и для нек-х изысков типа сериализации их приходится патчить. Но для С/фортрана это все несущественно...

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