Entonces, digamos que tiene un proceso de Python que está recopilando datos en tiempo real con alrededor de 500 filas por segundo (esto se puede paralelizar aún más para reducir a alrededor de 50 ps) de un sistema de colas y agregarlo a DataFrame
:
rq = MyRedisQueue(..)
df = pd.DataFrame()
while 1:
recv = rq.get(block=True)
# some converting
df.append(recv, ignore_index = True)
Ahora la pregunta es: ¿Cómo utilizar las CPU basadas en estos datos? Por lo tanto, soy plenamente consciente de las limitaciones de GIL , y analicé el espacio de nombres del Administrador de multiprocesamiento , también aquí , pero parece que hay algunos inconvenientes con respecto a la latencia en el marco de datos de retención centenaria . Antes de profundizar en él, también probé pool.map
lo que reconocí aplicar pickle
entre los procesos, que es una forma lenta y tiene demasiada sobrecarga.
Entonces, después de todo esto, finalmente me pregunto cómo (si) se puede transferir una inserción de 500 filas por segundo (o incluso 50 filas por segundo) a diferentes procesos con algo de tiempo de CPU para aplicar estadísticas y heurísticas en los datos del niño procesos?
¿Quizás sería mejor implementar un socket tcp personalizado o un sistema de colas entre los dos procesos? ¿O hay algunas implementaciones en pandas
otras bibliotecas para permitir realmente un acceso rápido al gran marco de datos en el proceso principal ? ¡Amo los pandas!