Python manager.dict () es muy lento en comparación con el dict regular

Tengo un dictado para almacenar objetos:

jobs = {} job = Job() jobs[job.name] = job 

ahora quiero convertirlo en administrador de uso porque quiero usar multiprocesamiento y necesito compartir este dictamen entre los procesos

 mgr = multiprocessing.Manager() jobs = mgr.dict() job = Job() jobs[job.name] = job 

solo al convertir para usar manager.dict () las cosas se pusieron extremadamente lentas.

Por ejemplo, si utiliza dict nativo, solo tomó .65 segundos crear 625 objetos y almacenarlo en el dict.

¡La misma tarea ahora toma 126 segundos!

¿Cualquier optimización que pueda hacer para mantener manager.dict () a la par con python {}?

El problema es que cada inserción es bastante lenta por alguna razón (117 veces más lenta en mi máquina), pero si actualiza su manager.dict() con un dictado normal, será una operación única y rápida.

 jobs = {} job = Job() jobs[job.name] = job # insert other jobs in the normal dictionary mgr = multiprocessing.Manager() mgr_jobs = mgr.dict() mgr_jobs.update(jobs) 

Luego usa la variable mgr_jobs .

Otra opción es usar la clase multiprocessing.Queue ampliamente adoptada.

Si está utilizando mgr.dict() dentro de un bucle en su grupo. Puede usar un dictado normal local para almacenar los resultados temporalmente y luego actualizar su mgr.dict() fuera del bucle como your_mgr_dict.update(local_dict)