Articles of cpython

C Python: Ejecutar código Python dentro de un contexto

La función API de Python C PyEval_EvalCode permite ejecutar el código comstackdo de Python. Quiero ejecutar un bloque de código Python como si se estuviera ejecutando dentro del scope de una función , para que tenga su propio diccionario de variables locales que no afecten el estado global. Esto parece bastante fácil de hacer, ya […]

¿Para qué se utiliza el paquete python-dev?

Recientemente instalé lxml . Antes de eso tuve que instalar todas las dependencias para eso. Así que intenté instalar liblxml2-dev , liblxslt1-dev y python-dev (Google buscó qué paquetes son necesarios para lxml ) pero incluso después de eso no pude instalar lxml usando el comando pip install lxml . Sin embargo, como estoy usando Python […]

¿Por qué algunas comparaciones de coma flotante <enteros son cuatro veces más lentas que otras?

Cuando se comparan flotantes con enteros, algunos pares de valores tardan mucho más en evaluarse que otros valores de una magnitud similar. Por ejemplo: >>> import timeit >>> timeit.timeit(“562949953420000.7 < 562949953421000") # run 1 million times 0.5387085462592742 Pero si el valor flotante o entero se hace más pequeño o más grande en una cierta cantidad, […]

ValueError: no se pudo analizar CPython sys.version después de usar el comando conda

Estoy encontrando un error que no puedo resolver a pesar de que otros hayan reportado el mismo error. Me estoy conectando de forma remota a una máquina Linux. He instalado la última versión de anaconda: $ bash Anaconda2-2.4.0-Linux-x86_64.sh // A lot of python libraries get installed installing: _cache-0.0-py27_x0 … Python 2.7.10 :: Continuum Analytics, Inc. […]

Caso de error de optimización de adición de cadena CPython

La pregunta ¿Por qué, en CPython, hace def add_string(n): s = ” for _ in range(n): s += ‘ ‘ tomar tiempo lineal, pero def add_string_in_list(n): l = [”] for _ in range(n): l[0] += ‘ ‘ tomar tiempo cuadrático? Prueba: Timer(partial(add_string, 1000000)).timeit(1) #>>> 0.1848409200028982 Timer(partial(add_string, 10000000)).timeit(1) #>>> 1.1123797750042286 Timer(partial(add_string_in_list, 10000)).timeit(1) #>>> 0.0033865350123960525 Timer(partial(add_string_in_list, 100000)).timeit(1) […]

¿Por qué es ‘new_file + = line + string’ mucho más rápido que ‘new_file = new_file + line + string’?

Nuestro código demora 10 minutos en llegar a 68,000 registros cuando usamos: new_file = new_file + line + string Sin embargo, cuando hacemos lo siguiente, solo toma 1 segundo: new_file += line + string Aquí está el código: for line in content: import time import cmdbre fname = “STAGE050.csv” regions = cmdbre.regions start_time = time.time() […]

Código fuente de Python para el operador integrado “in”

Estoy tratando de encontrar la implementación del operador incorporado en el código fuente de (C) Python. He buscado en el código fuente de las funciones integradas , bltinmodule.c , pero no puedo encontrar la implementación de este operador. ¿Dónde puedo encontrar esta implementación? Mi objective es mejorar la búsqueda de sub-cadenas en Python extendiendo diferentes […]

Son los conjuntos ordenados como dicts en python3.6

Debido a los cambios en la implementación de dict en Python 3.6, ahora está ordenado de forma predeterminada. ¿Se set el orden de preservar también ahora? No pude encontrar ninguna información al respecto, pero como ambas estructuras de datos son muy similares en la forma en que funcionan bajo el capó, pensé que podría ser […]

¿Cómo generar una secuencia de números aleatorios repetible?

Me gustaría una función que pueda generar una secuencia de valores pseudoaleatorios, pero que esa secuencia sea repetible en cada ejecución. Los datos que quiero deben estar razonablemente bien distribuidos aleatoriamente en un rango determinado, no tiene que ser perfecto. Quiero escribir un código que tendrá pruebas de rendimiento, basadas en datos aleatorios. Me gustaría […]

¿Qué sucede tras bambalinas cuando Python agrega pequeñas entradas?

Recientemente estuve jugando con la id y me di cuenta de que (c?) Python hace algo bastante sensato: asegura que las pequeñas intenciones siempre tengan la misma id . >>> a, b, c, d, e = 1, 2, 3, 4, 5 >>> f, g, h, i, j = 1, 2, 3, 4, 5 >>> [id(x) […]