Tengo un programa Python que tarda unos 10 minutos en ejecutarse. Así que uso Pool
de multiprocessing
para acelerar las cosas:Procesos persistentes Post Python Pool
from multiprocessing import Pool
p = Pool(processes = 6) # I have an 8 thread processor
results = p.map(function, argument_list) # distributes work over 6 processes!
Se ejecuta mucho más rápido, sólo de eso. Dios bendiga a Python! Y entonces pensé que sería eso.
Sin embargo, he notado que cada vez que hago esto, los procesos y su tamaño considerable permanecen, incluso cuando p
ha salido del alcance; efectivamente, he creado una fuga de memoria. Los procesos aparecen en mi aplicación Monitor de sistema como procesos de Python, que no usan CPU en este punto, pero tienen una memoria considerable para mantener su estado.
Pool tiene las funciones close
, terminate
y join
, y supongo que una de ellas matará los procesos. ¿Alguien sabe cuál es la mejor manera de decirle a mi grupo p
que he terminado con él?
¡Muchas gracias por su ayuda!