Как связать два параллельных процесса (без завершения) и вызвать функцию для обработки частичных результатов в 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.
Не могли бы вы мне помочь или посоветовать?
Спасибо!