Как связать два параллельных процесса (без прерывания) в многопроцессорном режиме Python? - PullRequest
1 голос
/ 28 марта 2020

Как связать два параллельных процесса (без завершения) и вызвать функцию для обработки частичных результатов в Python многопроцессорной обработке?

У меня есть алгоритм Метрополиса-Хастинга, и я уже распараллелил его и могу сгенерировать два (или более) выводит (mcm c цепочки) одновременно (у меня работает нормально). Тем не менее, я хочу, чтобы каждое число шагов оценивало частичные результаты всего параллельного процесса с помощью функции сходимости, чтобы определить, похожи ли две цепочки (два разных вызова функции алгоритма метрополии).

Моя схема такова, как следует:

from multiprocessing import Pool
#chain_num is the number of chains that I want, hence the number of parallel process
p = Pool(self.chain_num)

i = range(self.chain_num)

p.map(self.metropolis, i)

p.close()

#where the metropolis function is an mcmc algorithm
def metropolis(self):
   #do something in each call

   # when the number of calls is 100,
   # I want to compare the partial outputs
   # of all processes in parallel with a
   # external function that works fine.
   # If the comparison through this external function
   #satisfy a condition, then
   # I want to interrupt and finish.

Не могли бы вы мне помочь или посоветовать?

Спасибо!

...