Então, digamos que você tenha um processo Python que colete dados em tempo real com cerca de 500 linhas por segundo (isso pode ser paralelizado ainda mais para reduzir para cerca de 50 ps) de um sistema de filas e anexá-lo a DataFrame
:
rq = MyRedisQueue(..)
df = pd.DataFrame()
while 1:
recv = rq.get(block=True)
# some converting
df.append(recv, ignore_index = True)
Agora, a pergunta é: como utilizar as CPUs com base nesses dados? Portanto, estou plenamente consciente das limitações do GIL , e olhou para multiprocessamento Gerente de namespace , aqui também , mas parece que existem algumas desvantagens em relação à latência na trama de dados centerally espera . Antes de escavar para ele, eu também tentou pool.map
que eu que reconheceu a aplicar pickle
entre os processos, que é maneira de retardar e tem muita sobrecarga.
Então, depois de tudo isso, eu finalmente me pergunto, como (se) uma inserção de 500 linhas por segundo (ou mesmo 50 linhas por segundo) pode ser transferida para diferentes processos com algum tempo de CPU restante para aplicar estatísticas e heurísticas nos dados na criança processos?
Talvez seja melhor implementar um soquete tcp personalizado ou sistema de filas entre os dois processos? Ou existem algumas implementações pandas
ou outras bibliotecas para realmente permitir um acesso rápido ao único grande quadro de dados no processo pai ? Eu amo pandas!