Articles of python c extension

¿Cuándo se debe llamar a PyEval_InitThreads?

Estoy un poco confundido acerca de cuándo debo llamar a PyEval_InitThreads . En general, entiendo que se debe llamar a PyEval_InitThreads siempre que se PyEval_InitThreads un subproceso que no sea de Python (es decir, un subproceso que se genera dentro de un módulo de extensión). Sin embargo, estoy confundido si PyEval_InitThreads es para progtwigs C […]

¿Cómo creo una matriz mutable de longitud fija de objetos de Python en Cython?

Necesito tener una matriz de objetos python para usar en la creación de una estructura de datos trie. Necesito una estructura que sea de longitud fija como una tupla y se pueda modificar como una lista. No quiero usar una lista porque quiero poder asegurarme de que la lista tenga exactamente el tamaño correcto (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 […]

¿Docstrings en extensiones C a Python?

Al crear una extensión C para Python, ¿es posible poder escribir de alguna manera los comentarios que se exponen como cadenas de documentación a los usuarios de la extensión?

ImportError: el módulo dynamic no define la función de inicio (initfizzbuzz)

Intenté comstackr fizzbuzz.c para importar desde python. Para construir fizzbuzz.c , usé python setup.py build_ext -i . Después de construirlo, intenté importar fizzbuzz.c pero se produjo el error siguiente. Como puedó resolver esté problema ? Error >>> import fizzbuzz Traceback (most recent call last): File “”, line 1, in ImportError: dynamic module does not define […]

¿Cómo puedo configurar el nivel de registro utilizado por los nombres al usar pip?

Estoy tratando de averiguar cuál es la razón del error: Unable to find vcvarsall.bat después de que pip install greenlet . Me gustaría establecer el nivel de registro utilizado por los nombres para que se impriman los mensajes de depuración como log.debug(“Unable to find productdir in registry”) . Después de ver def parse_command_line(self): pensé que […]

Devuelva los directorios de inclusión y tiempo de ejecución desde Python

Digamos que quiero usar gcc desde la línea de comandos para comstackr una extensión C de Python. Yo estructuraría la llamada algo como esto: gcc -o applesauce.pyd -IC:/Python35/include -LC:/Python35/libs -l python35 applesauce.c Noté que las opciones -I , -L y -l son absolutamente necesarias, o de lo contrario obtendrá un error similar a este . […]

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 […]

¿Hay alguna razón para usar malloc sobre PyMem_Malloc?

Estoy leyendo la documentación de Gestión de memoria en las extensiones de Python C , y por lo que puedo decir, no parece haber muchas razones para usar malloc lugar de PyMem_Malloc . Digamos que quiero asignar una matriz que no se exponga al código fuente de Python y se almacene en un objeto que […]