Articles of rendimiento

¿Cómo mejorar el rendimiento de un script que opera con gran cantidad de datos?

Mi script de aprendizaje automático produce una gran cantidad de datos (millones de BTree s contenidos en una raíz BTree ) y los almacena en FileStorage de ZODB, principalmente porque no caben en la RAM. Script también modifica con frecuencia los datos añadidos previamente. Cuando aumenté la complejidad del problema y, por lo tanto, es […]

PyPy 17x más rápido que Python. ¿Se puede acelerar Python?

Resolviendo un problema reciente de Adviento de Código , encontré que mi Python predeterminado era ~ 40 veces más lento que PyPy. Pude hacer eso hasta aproximadamente 17x con este código limitando las llamadas a len y limitando las búsquedas globales ejecutándolo en una función. En este momento, e.py ejecuta en 5.162 segundos en Python […]

Algoritmo eficiente para evaluar un conjunto de funciones 1-d en un conjunto de 1d numpy de la misma longitud

Tengo una matriz de longitud N (grande) de k funciones distintas, y una matriz de longitud N de abcissa. Quiero evaluar las funciones en el abcissa para devolver una serie de ordenadas de longitud-N, y críticamente, necesito hacerlo muy rápido. He intentado el siguiente bucle en una llamada a np.where, que es demasiado lento: Crea […]

¿De dónde proviene el aumento de rendimiento de las implementaciones de comprensión de mapa o lista sobre la llamada a una función a través de un bucle?

Entiendo que podría ser más eficiente con la memoria en la implementación del mapa que en la forma en que podría hacerlo en un bucle. Sin embargo, veo que el uso de una función de mapa en lugar de llamar a una función que se repite en un bucle también tiene un aumento de velocidad. […]

chispa – Convertir el dataframe a la lista mejorando el rendimiento

Necesito convertir una columna de la ttwig de datos de Spark en la lista para usarla más adelante para matplotlib df.toPandas()[col_name].values.tolist() Parece que hay una sobrecarga de alto rendimiento. Esta operación toma alrededor de 18 segundos. ¿Hay alguna otra forma de hacer eso o mejorar el rendimiento?

Binning y luego combinar los bins con el mínimo número de observaciones?

Digamos que creo algunos datos y luego creo contenedores de diferentes tamaños: from __future__ import division x = np.random.rand(1,20) new, = np.digitize(x,np.arange(1,x.shape[1]+1)/100) new_series = pd.Series(new) print(new_series.value_counts()) revela: 20 17 16 1 4 1 2 1 dtype: int64 Básicamente, quiero transformar los datos subyacentes, si establezco un umbral mínimo de al menos 2 por bin, de […]

Mejora la velocidad de ejecución de Python con hilos paralelos

Digamos que tengo este código de ejemplo: x = foo1(something1) y = foo2(something2) z = max(x, y) Quiero mejorar el tiempo de ejecución de este código mediante el uso de subprocesos (espero que ayude, ¿no es así?). Me gustaría mantener las cosas lo más simples posible, así que básicamente lo que me gustaría hacer es […]

¿Python paraleliza automáticamente las secciones enlazadas a IO y CPU o a la memoria?

Esta es una pregunta de seguimiento sobre una anterior . Considere este código, que es menos delicado que el de la pregunta anterior (pero mucho más simple que el de mi pregunta ) import sys data=[] for line in open(sys.argv[1]): data.append(line[-1]) print data[-1] Ahora, esperaba un tiempo de ejecución más largo (mi archivo de referencia […]

¿Por qué este generador de Python está devolviendo el mismo valor cada vez?

Tengo este generador que produce listas: def gen(): state = [None] for i in range(5): state[0] = i yield state Y aquí está la salida, cuando la llamo: >>> list(gen()) [[4], [4], [4], [4], [4]] ¿Por qué son todos los elementos [4] ? ¿No debería ser [[0], [1], [2], [3], [4]] ?

Acelerar nested para bucle con exponenciación de elementos.

Estoy trabajando en un código grande y me encuentro en la necesidad de acelerar un poco específico. He creado un MWE muestra a continuación: import numpy as np import time def random_data(N): # Generate some random data. return np.random.uniform(0., 10., N).tolist() # Lists that contain all the data. list1 = [random_data(10) for _ in range(1000)] […]