Articles of python c api

Py_INCREF / DECREF: Cuando

Es una correcta en afirmar lo siguiente: Si se crea un objeto de Python en una función C, pero la función no lo devuelve, no se necesita INCREF , pero sí una DECREF . [falso] Si la función lo devuelve, es necesario INCREF , en la función que recibe el valor de retorno. [/ falso] […]

AssertionError (solo 3.X) al llamar a Py_Finalize con subprocesos

Recibo una salida de error cuando llamo a Py_Finalize () de C-API desde un subproceso C diferente del que hice una llamada a python. El error que estoy viendo es: Exception ignored in: Traceback (most recent call last): File “C:\Python34-32\Lib\threading.py”, line 1289, in _shutdown assert tlock.locked() AssertionError: Esto solo sucede en Python 3.X (probado con […]

¿Cómo funciona PyArg_ParseTupleAndKeywords?

He estado tratando de aprender cómo escribir extensiones C para Python y quiero estar seguro de que entiendo cómo funciona PyArg_ParseTupleAndKeywords. Creo que el primer argumento es un puntero PyObject que apunta a una matriz de los argumentos que se pasan a la función de extensión C en el orden en que se pasaron. El […]

Obtener la ruta LIB de Python

Puedo ver que la ruta INCLUDE es sysconfig.get_path(‘include’) . Pero no veo ningún valor similar para LIB . NumPy lo codifica directamente como os.path.join(sys.prefix, “libs”) en Windows y get_config_var(‘LIBDIR’) (no documentado y faltante en Windows) de lo contrario. ¿Hay una forma más compatible?

leyendo una variable global de python en c

Estoy tratando de aprender a usar la API de Python / C correctamente. Lo único que tengo que hacer es leer una variable global (en mi diccionario de casos, pero estoy empezando con una variable entera simple). Usando la discusión: ¿Cómo acceder a una variable global de Python desde C? y la fuente de la […]

E / S de archivos en la API de Python 3 C

La API de C en Python 3.0 ha cambiado (en desuso) muchas de las funciones para objetos de archivo. Antes, en 2.X, podías usar PyObject* PyFile_FromString(char *filename, char *mode) para crear un objeto de archivo Python, por ejemplo: PyObject *myFile = PyFile_FromString(“test.txt”, “r”); … pero dicha función ya no existe en Python 3.0. ¿Cuál sería […]

Llama a una función de Python desde un progtwig en C

Tengo una aplicación en C y en algún momento necesito resolver un problema de optimización no lineal. Desafortunadamente, AFAIK hay recursos muy limitados para hacer eso en C (déjeme saber de otra manera). Sin embargo, es bastante simple hacerlo en Python, por ejemplo, scipy.optimize.minimize . Mientras intentaba hacerlo, encontré algunas de las fallas que parecen […]

Alternativas de tipo fusionado en cython.

Estoy trabajando en reescribir un módulo de python originalmente escrito en C usando python-C api a Cython. El módulo también usa NumPy. Un desafío importante del proyecto es mantener la velocidad actual del módulo y también debería funcionar para todos los tipos de datos de Numpy. Estoy pensando en usar un tipo de datos fusionados […]

¿Cómo uso apropiadamente la API C de Python y las excepciones?

si hago algo como >>> x = int(1,2,3,4,5) Inmediatamente recibo un error fatal (uno que terminaría con la ejecución del progtwig si estuviera en un script escrito previamente) Traceback (most recent call last): File “”, line 1, in TypeError: int() takes at most 2 arguments (5 given) y x permanece indefinido: >>> x Traceback (most […]

Accediendo a la vista de una matriz NumPy usando la API de C

En un módulo de extensión de Python que he escrito en C ++, uso el siguiente fragmento de código para convertir una matriz NumPy en una matriz de Armadillo para usar en la parte C ++ del código: static arma::mat convertPyArrayToArma(PyArrayObject* pyarr, int nrows, int ncols) { // Check if the dimensions are what I […]