Articles of cpython

Python: Vida útil de las variables globales del módulo

Tengo un recurso compartido con un alto costo de inicialización y, por lo tanto, quiero acceder a él a través del sistema (se usa básicamente para algunos instrumentos, por lo que tiene que ser liviano). Así que creé un módulo gestionando la configuración y accediendo a él. Realiza una inicialización perezosa del recurso y lo […]

¿Puedo incrustar CPython dentro de PyPy?

Me gustaría escribir una aplicación sensible al rendimiento en Python, por lo que ejecutarlo bajo PyPy es una elección natural. Sin embargo, una parte importante de mi código depende de numpy, scipy y scikit-learn. ¿Sería posible incrustar una instancia de CPython dentro de un progtwig PyPy en ejecución para llamar código orientado a matriz? Si […]

La función de Python (o un bloque de código) se ejecuta mucho más lentamente con un intervalo de tiempo en un bucle

Noté un caso en Python, cuando un bloque de código, nested en un bucle, se ejecuta continuamente, es mucho más rápido que ejecutarse con algún intervalo de tiempo .sleep() . Me pregunto el motivo y una posible solución . Supongo que está relacionado con el caché de la CPU o algún mecanismo de cPython VM. […]

¿Python GIL evita que el uso de la CPU exceda el 100% en máquinas de varios núcleos?

Muchas referencias dicen que, Python GIL reduce el rendimiento del código de subprocesos múltiples en una máquina con varios núcleos, ya que cada subproceso deberá adquirir el GIL antes de la ejecución. En otras palabras, parece que GIL hace un progtwig Python de subprocesos múltiples en un modo de subproceso único, de hecho. Por ejemplo: […]

¿Diferentes comportamientos en el script de Python y en el modo inactivo de Python?

En el ralentí de python: >>> a=1.1 >>> b=1.1 >>> a is b False Pero cuando coloco el código en un script y lo ejecuto, obtendré un resultado diferente: $cat t.py a=1.1 b=1.1 print a is b $python t.py True ¿Por qué pasó esto? Sé que is compara el id de dos objetos, entonces, ¿por […]

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?