Эффективные массивы в Python

Июль 23, 2007, 23:13

Возвращаясь к теме вызова нативных модулей из Python (теперь это в Linux, но в Windows принципиальных различий быть не должно).

В Python есть очень полезный модуль для работы с массивами, называется он, как не странно, array. Это не единственный модуль для работы с массивами, но он очень удобен, если необходимо обмениваться массивами с программами на C/C++ (например OpenGL текстурку скормить, или просто все тяжелые вычисления на C/C++ написать):

main.cpp:

extern "C" float some(float* arg, int len) 
{
float sum = 0;
for ( int i = 0; i < len; ++i )
sum += arg[i];
return sum;
}

Компилируем:

> g++ -shared -o slib.so main.cpp 

Вызываем:

>>> from array import * 
>>> a = array('f',[1.1]*10)
>>> from ctypes import *
>>> lb = CDLL("/path/to/lib/slib.so")
>>> lb.some.restype = c_float
>>> lb.some(a.tostring(),10)
11.000000953674316
blog comments powered by Disqus
Сергей Лымарь © 2005-2011, Все права защищены. Сайт реализован на языке Haskell