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