Articles of cpython

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

¿Cómo funciona la carga de módulos en CPython?

¿Cómo funciona la carga del módulo en CPython debajo del capó? Especialmente, ¿cómo funciona la carga dinámica de extensiones escritas en C? ¿Dónde puedo aprender sobre esto? Encuentro el código fuente en sí bastante abrumador. Puedo ver que trusty ‘ dlopen() y friends se usan en sistemas que lo admiten, pero sin una idea más […]

Uso de Py_buffer y PyMemoryView_FromBuffer con diferentes elementos de tamaño

Esta pregunta está relacionada con una pregunta anterior que hice. A saber este si alguien está interesado. Básicamente, lo que quiero hacer es exponer una matriz de C a Python usando un Py_buffer envuelto en un objeto de vista de memoryview . Lo hice funcionar usando PyBuffer_FillInfo (trabajo = puedo manipular los datos en Python […]

¿Por qué la comparación de cuerdas es tan rápida en python?

Sentí curiosidad por comprender los aspectos internos de cómo funciona la comparación de cadenas en python cuando estaba resolviendo el siguiente problema de algoritmo de ejemplo: Dadas dos cadenas, devuelve la longitud del prefijo común más largo Solución 1: charByChar Mi intuición me dijo que la solución óptima sería comenzar con un cursor al comienzo […]

¿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?

¿Cuáles son algunas estrategias para escribir el código de Python que funciona en CPython, Jython y IronPython?

Al intentar identificar dos de estos entornos al mismo tiempo, puedo decir con seguridad que si tiene que usar una base de datos, etc., tendrá que escribir un código único para ese entorno. ¿Tienes una gran manera de manejar esta situación?

¿Cómo obtener la dirección de la memoria mmap-ed en Python?

No puedo imaginar cómo obtener la dirección virtual de los objetos mmap estándar en Python (desde el módulo mmap). Los métodos documentados solo parecen acceder a la memoria como una matriz de bytes o como cadenas de caracteres. Pero necesito acceder a la memoria de mmap’ped exactamente 2 o 4 bytes a la vez, porque […]

¿Cómo detecta Python’s Garbage Collector las referencias circulares?

Estoy tratando de entender cómo el recolector de basura de Python detecta referencias circulares. Cuando miro la documentación, todo lo que veo es una statement de que se detectan referencias circulares, excepto cuando los objetos involucrados tienen un método __del__ . Si esto sucede, mi entendimiento (posiblemente defectuoso) es que el módulo gc actúa como […]

Python: ¿igualdad para Nan en una lista?

Solo quiero descubrir la lógica detrás de estos resultados: >>>nan = float(‘nan’) >>>nan == nan False # I understand that this is because the __eq__ method is defined this way >>>nan in [nan] True # This is because the __contains__ method for list is defined to compare the identity first then the content? Pero en […]

¿Por qué Python 3 es considerablemente más lento que Python 2?

He estado tratando de entender por qué Python 3 en realidad está tomando mucho tiempo en comparación con Python 2 en ciertas situaciones, a continuación se presentan algunos casos que he verificado desde Python 3.4 a Python 2.7. Nota: He pasado por algunas de las preguntas como ¿Por qué no hay una función xrange en […]