Articles of python c extension

Extensión Python C: ¿Por qué los métodos que usan argumentos de palabras clave se convierten en PyCFunction?

Estoy aprendiendo sobre las extensiones de Python-C y me sorprende saber por qué los métodos que usan argumentos de palabras clave se deben convertir a PyCFunctions. Mi comprensión de un PyCFunction es que toma dos punteros a PyObjects y devuelve un solo puntero a un PyObject, por ejemplo PyObject* myFunc(PyObject* self, PyObject* args) Si voy […]

PyList_SetItem vs. PyList_SETITEM

Por lo que puedo decir, la diferencia entre PyList_SetItem y PyList_SETITEM es que PyList_SetItem disminuirá el recuento de referencia del elemento de la lista que sobrescribe y PyList_SETITEM no. ¿Hay alguna razón por la que no debería usar PyList_SetItem todo el tiempo? ¿O me metería en problemas si usara PyList_SetItem para inicializar una posición de […]

¿easy_install falla en el error “No se pudo encontrar el script de configuración” después de la carga binaria?

Después de cargar una distribución binaria de mi extensión Python C con la python setup.py bdist upload , easy_install [my-package-name] falla en “error: No se pudo encontrar un script de configuración en / tmp / easy_install / package-name-etc- etc “. ¿Qué estoy haciendo mal?

Cómo usar las extensiones C en python para moverte por GIL

Quiero ejecutar un progtwig intensivo de CPU en Python a través de múltiples núcleos y estoy tratando de averiguar cómo escribir extensiones C para hacer esto ¿Hay ejemplos de código o tutoriales sobre esto?

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