Llamar C/C++ desde Python: ¿cómo integrar código nativo en un proyecto Python?
¡Hola a todos! Llevo escribiendo en Python unos dos años, pero recientemente me enfrenté a una tarea que me dejó perplejo. Necesito acelerar un módulo computacional en mi proyecto. En Python funciona demasiado lento (bucles con millones de iteraciones), y decidí reescribir la parte crítica en C++.
Escribí una función simple en C++ para calcular números de Fibonacci:
```cpp
// fibonacci.cpp
#include
extern "C" {
int fibonacci(int n) {
if (n <= 1) return n;
int a = 0, b = 1, temp;
for (int i = 2; i <= n; ++i) {
temp = a + b;
a = b;
b = temp;
}
return b;
}
}
```
Lo compilé en DLL usando MinGW: `g++ -shared -o fibonacci.dll fibonacci.cpp`
Ahora intento llamarlo desde Python usando ctypes:
```python
import ctypes
lib = ctypes.CDLL('./fibonacci.dll')
result = lib.fibonacci(10)
print(result) # Imprime 55 — ¡funciona!
```
Pero este es un caso simple. ¿Y si necesito pasar un array de datos?