Articles of grupo de

multiprocesamiento – asignación de grupo

Noté este comportamiento en python para la asignación de grupo. A pesar de que tengo 20 procesos en el grupo, cuando hago un map_async para los procesos de decir 8, en lugar de lanzar todos los procesos para ejecutar, solo tengo 4 en ejecución. cuando esos 4 terminan, envía dos más, y luego, cuando esos […]

Paralel for loop, map () works, pool.map () da TypeError

Estoy haciendo una matriz de distancia condensada (solo arriba a la derecha). El cálculo de la distancia lleva algún tiempo, por lo que quiero paralelizar el bucle for. El bucle sin pintar parece spectra_names, condensed_distance_matrix, index_0 = [], [], 0 for index_1, index_2 in itertools.combinations(range(len(clusters)), 2): if index_0 == index_1: index_0 += 1 spectra_names.append(clusters[index_1].get_names()[0]) try: […]

Pandas `DataFrameGroupBy` y` SeriesGroupBy`

Admito que no soy un gurú de Python, pero aún así, tratar con Pandas DataFrameGroupBy y SeriesGroupBy excepcionalmente contraintuitivo. (Tengo un fondo R). Tengo el dataframe a continuación: import pandas as pd import numpy as np df = pd.DataFrame({‘id’ : range(1,9), ‘code’ : [‘one’, ‘one’, ‘two’, ‘three’, ‘two’, ‘three’, ‘one’, ‘two’], ‘colour’: [‘black’, ‘white’,’white’,’white’, ‘black’, […]

Inserte filas como resultado de una operación grupal en el dataframe original

Por ejemplo, tengo un dataframe de pandas de la siguiente manera: col_1 col_2 col_3 col_4 a X 5 1 a Y 3 2 a Z 6 4 b X 7 8 b Y 4 3 b Z 6 5 Y quiero, para cada valor en col_1, agregar los valores en col_3 y col_4 (y muchas […]

Aplicación de la función de media acumulativa a un objeto agrupado

Tengo un df DataFrame donde cada registro representa un juego de fútbol. Los equipos aparecerán más de una vez. Necesito calcular algún tipo de media móvil para las puntuaciones de cada equipo (bueno, no es exactamente la media móvil de la letra). date home away score_h score_a 166 2013-09-01 Fulham Chelsea 0 0 167 2013-09-03 […]

El multiprocesamiento de Python map_async genera un error en Windows

El siguiente código funciona perfectamente en Unix pero genera un multiprocesamiento.TimeoutError en Windows 7 (ambos sistemas operativos utilizan Python 2.7). ¿Alguna idea de por qué? Gracias. from multiprocessing import Pool def increment(x): return x + 1 def decrement(x): return x – 1 pool = Pool(processes=2) res1 = pool.map_async(increment, range(10)) res2 = pool.map_async(decrement, range(10)) print res1.get(timeout=1) […]

Python Pandas: Asignar el último valor del grupo DataFrame a todas las entradas de ese grupo

En Python Pandas, tengo un DataFrame. Agrupo este DataFrame por una columna y quiero asignar el último valor de una columna a todas las filas de otra columna. Sé que puedo seleccionar la última fila del grupo con este comando: import pandas as pd df = pd.DataFrame({‘a’: (1,1,2,3,3), ‘b’:(20,21,30,40,41)}) print(df) print(“-“) result = df.groupby(‘a’).nth(-1) print(result) […]

pasando argumentos y manager.dict a pool en multiproceso en Python 2.7

Quiero paralelizar una función que actualizará un diccionario compartido usando Pool en lugar de Process para que no asigne demasiadas CPU. es decir, puedo tomar esto def my_function(bar,results): results[bar] = bar*10 def paralell_XL(): from multiprocessing import Pool, Manager, Process manager = Manager() results=manager.dict() jobs = [] for bar in foo: p=Process(target=my_function, args=(bar, results)) jobs.append(p) p.start() […]

Python pandas error al hacer groupby cuentas

Al hacer cuentas de groupby sobre varias columnas, aparece un error. Aquí está mi dataframe y también un ejemplo que simplemente etiqueta los distintos grupos “b” y “c”. df = pd.DataFrame(np.random.randint(0,2,(4,4)), columns=[‘a’, ‘b’, ‘c’, ‘d’]) df[‘gr’] = df.groupby([‘b’, ‘c’]).grouper.group_info[0] print df abcd gr 0 0 1 0 0 1 1 1 1 1 0 2 […]

¿Cómo funciona la función de callback en multiproceso python map_async

Me costó toda una noche depurar mi código, y finalmente encontré este problema complicado. Por favor, eche un vistazo al código de abajo. from multiprocessing import Pool def myfunc(x): return [i for i in range(x)] pool=Pool() A=[] r = pool.map_async(myfunc, (1,2), callback=A.extend) r.wait() Pensé que obtendría A=[0,0,1] , pero la salida es A=[[0],[0,1]] . Esto […]