У меня есть программа на Python, выполнение которой занимает около 10 минут.Поэтому я использую Pool
из multiprocessing
, чтобы ускорить процесс:
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!
Он запускается намного быстрее, именно из этого.Боже, благослови Питона!И поэтому я подумал, что так оно и будет.
Однако я заметил, что каждый раз, когда я делаю это, процессы и их значительно измеренное состояние остаются, даже когда p
выходит из области видимости;эффективно, я создал утечку памяти.Процессы отображаются в моем приложении System Monitor как процессы Python, которые на данный момент не используют ЦП, но имеют достаточно памяти для поддержания своего состояния.
В пуле есть функции close
, terminate
и join
, и я предполагаю, что один из них уничтожит процессы.Кто-нибудь знает, как лучше всего сообщить моему пулу p
, что я с ним покончил?
Большое спасибо за вашу помощь!