Я использую multiprocessing
библиотеку Python, а также emcee
, которая также использует разные потоки для реализации MCMC
. Проблема в том, что даже когда я close
pool
все еще кажется, что python использует процессоры и замедляет работу ядер, и я понятия не имею, как эффективно освободить ядра после выполнения работы. Кто-нибудь может подсказать, что мне делать?
Обновление: Мой код уже опубликован здесь.
Закрытие многопроцессорности после каждого параллельного задания
Ответы (1)
Закрытие Pool
не останавливает его работу, это просто предотвращает добавление в него новых рабочих элементов:
закрыть()
Предотвращает отправку новых задач в пул. Как только все задачи будут выполнены, рабочие процессы завершатся.
Поэтому, если у вас много задач в очереди, закрытие Pool
не повлияет на использование ресурсов — все рабочие будут продолжать потреблять эти задачи в очереди, пока они не исчезнут. Если вы хотите немедленно прервать все рабочие элементы, вам нужно использовать pool.terminate
:
завершить()
Немедленно останавливает рабочие процессы, не завершая незавершенную работу. Когда объект пула очищается от мусора,
terminate()
будет вызываться немедленно.
person
dano
schedule
26.08.2014
top
, я вижу, что моя работа не была убита, и ядра все еще используются. - person Dalek   schedule 26.08.2014