colav / impactu

Colav Impactu Issues and Documentation
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

[kahi_impactu_utils] pymongo multiprocessing #166

Open omazapa opened 2 days ago

omazapa commented 2 days ago

implementar un sistema que permite acceder al a base de datos de mongodb usando multiprocessing con joblib.

teniendo en cuenta esto https://pymongo.readthedocs.io/en/stable/faq.html#is-pymongo-fork-safe

Justificación:

Python no es bueno para procesamiento multithreading por el GIL:

La mayoria de nuestros códigos sufren cuello de botella por el ejecución con threads y los tiempos de ejecución son altos.

Problemas con multiprocessing

Joblib y los sistemas multiprocessing en general usan fork que al crear los nuevos procesos, copian la memoria entera en el nuevo proceso, por eso se tiene que usar con mucha precaución en los códigos, por que puede inducir a un consumo excesivo de memoria RAM.

Los plugins de kahi deberían permitir al usuario elegir el backend de joblib "theading" o "multiprocessing" para poder hacer ejecuciones seguras del código, al igual que el parémtro batch_size que permite afinar el número de elementos a procesar por thread/fork.