Ho un programma Python che richiede circa 10 minuti per essere eseguito. Quindi io uso Pool
da multiprocessing
per accelerare le cose:Process persistenti 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!
Si corre molto più veloce, proprio da questo. Dio benedica Python! E così ho pensato che sarebbe stato così.
Tuttavia, ho notato che ogni volta che faccio questo, i processi e il loro stato di dimensioni considerevoli rimangono, anche quando p
è andato fuori campo; in modo efficace, ho creato una perdita di memoria. I processi vengono visualizzati nella mia applicazione Monitor di sistema come processi Python, che a questo punto non utilizzano CPU, ma una notevole quantità di memoria per mantenere il loro stato.
Pool ha funzioni close
, terminate
e join
, e mi piacerebbe assumere uno di questi sarà uccidere i processi. Qualcuno sa qual è il modo migliore per dire al mio pool p
che ho finito con esso?
Grazie mille per il vostro aiuto!