Уведомления

Группа в Telegram: @pythonsu

#1 Июль 6, 2011 18:50:37

math.beginer
От:
Зарегистрирован: 2011-03-28
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

возврат_значений_из_C_функции

нужно из C-шной функции вернуть значение типа numpy.ndarray(2,dtype='d') — numpy массив из двух элементов.

моя попытка что-то сделать

???double[2]???  summa( const double* pnts, const int n) {
double tmp0,tmp1;
int i;
tmp0 = 0.0;
tmp1 = 0.0;
for(i=0; i<n; ++i) {
tmp0+=*(pnts+2*i);
tmp1+=*(pnts+2*i+1);
}
// printf("tmp=%lf\n",tmp);
return ????;
}
В Питоне хотелось что-бы работало так:
mod_test=numpy.ctypeslib.load_library('libtest', '.')
mass=numpy.ndarray(2*n,dtype='d')
...
result=mod_test.summa(mass.ctypes.data,n)



Офлайн

#2 Июль 6, 2011 20:56:10

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

возврат_значений_из_C_функции

так как вы хотите сделать не получится (точнее из c можно попросить питон сделать numpy double) т.к. питон захочет сам контролировать время жизни массива.
Я почти всегда делаю так: объект создается в питоне - а сишный код модифицирует содержание.

# python:
a=numpy.zeros(n,dtype='d')
b=numpy.zeros(2,dtype='d')
n=10
mod_test.summa(a.ctype.data,b.ctype.data,n)
// C:
void summa(const double* a,double* b,int n)
{
....
}



Отредактировано (Июль 6, 2011 20:56:36)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version