Articles of cython

Definición de def, cdef y cpdef en cython

Me gustaría saber la diferencia entre def , cdef y cpdef cuando declaro una función. La diferencia entre def y los demás es más o menos clara. Y también he visto que a veces se agrega el tipo de retorno en la statement ( cdef void/double/int… name ) y otras veces no. También me gustaría […]

Asigne arrays multidimensionales intermedios en Cython sin adquirir el GIL

Estoy tratando de usar Cython para paralelizar una operación costosa que implica generar arreglos multidimensionales intermedios. El siguiente código muy simplificado ilustra el tipo de cosas que estoy tratando de hacer: import numpy as np cimport cython cimport numpy as np from cython.parallel cimport prange from libc.stdlib cimport malloc, free @cython.boundscheck(False) @cython.wraparound(False) def embarrasingly_parallel_example(char[:, :] […]

ejecutando código c ++ desde python

Quiero ejecutar un código helloword.cpp que toma algún argumento de la consola analiza esos argumentos y luego imprime “hola mundo” en la consola. Ahora, quiero analizar estos argumentos de un script de python parsearguments.py Así por ejemplo: def parse_arguments: …# some code return arguments Ahora, ¿cómo me comunico entre python y c ++? He estado […]

Cython escribió vistas de memoria: ¿qué son realmente?

La documentación de Cython explica muy bien lo que permiten, cómo puede declararlos y cómo usarlos. Sin embargo, todavía no está claro para mí lo que realmente son. Por ejemplo, una asignación simple de una matriz numpy como esta: my_arr = np.empty(10, np.int32) cdef int [:] new_arr = my_arr Puede hacer el acceso / asignación […]

Manejo de parámetros por defecto en cython.

Estoy envolviendo algo de código c ++ usando cython, y no estoy seguro de cuál es la mejor manera de tratar los parámetros con valores predeterminados. En mi código c ++ tengo una función para la cual los parámetros tienen valores predeterminados. Me gustaría envolverlos de tal manera que estos valores predeterminados se usen si […]

¿Cómo usar las vistas de memoria escritas con Cython para aceptar cadenas de Python?

¿Cómo puedo escribir una función de Cython que toma un objeto de cadena de bytes (una cadena normal, un bytearray u otro objeto que sigue el protocolo del búfer ) como una vista de memoria escrita ? De acuerdo con el tutorial de Unicode y Passing Strings Cython, lo siguiente debería funcionar: cpdef object printbuf(unsigned […]

Cómo pasar una matriz numpy de tipos de cadena a una función en Cython

Pasar una matriz numpy de dtype np.float64_t funciona bien (abajo), pero no puedo pasar matrices de cadenas. Esto es lo que funciona: # cython_testing.pyx import numpy as np cimport numpy as np ctypedef np.float64_t dtype_t cdef func1 (np.ndarray[dtype_t, ndim=2] A): print A def testing(): chunk = np.array ( [[94.,3.],[44.,4.]], dtype=np.float64) func1 (chunk) Pero no puedo […]

¿Cómo puedo comstackr una extensión usando cython?

Estoy tratando de comstackr una extensión de cython simple de la página de ejemplo aquí en mi máquina de Windows 7 de 64 bits con la versión de 64 bits de Python 2.6 instalada. Instalé Cython 0.15.1 para la versión de Windows de 64 bits de la página de Gohlke . Básicamente, la respuesta de […]

C ++ vector a Python 3.3

Me gustaría obtener una lista de python, digamos, [1,2,3,4] , de un script de C ++. Escribí el script C ++, que devuelve un vector. ¿Cómo conectar los extremos sin SWIG / SIP / Cython / y otros? ¿Podría ser más fácil simplemente comstackr C ++ en un archivo .exe o elf y luego llamar […]

‘easy_install -U cython’ falla al quejarse de vcvarsall.bat y -mno-cygwin

Bajo Windows, parece que easy_install con una dependencia de C no es muy fácil. Intento 1 – errores vcvarsall.bat Estoy instalando cython bajo Windows 7, con MinGw ; Modifiqué la PATH de Windows7 para incluir C:\MinGw\bin . En este punto, traté de hacer easy_install -U cython , y obtuve … C:\Users\mike_pennington\Desktop\TestDrive>easy_install -U cython Searching for […]