Я реализовал несколько простых parallelism в коде Монте-Карло, используя модуль многопроцессорности Python. У меня есть код, который выглядит так:
montecarlos = [MonteCarlo(f,fargs) for fargs in farglist]
jobs = [multiprocessing.Process(mc) for mc in montecarlos]
for job in jobs: job.start()
for job in jobs: job.join()
results = [mc.results for mc in montecarlos]
Однако, когда я смотрю на список результатов, похоже, что иранские монтеры уже не начали. Я знаю, что они есть, потому что у меня могут быть процессы распечатывать информацию во время шагов monte carlo. Поэтому я делаю что-то немое. Я думал, что job.join() сохранит список результатов, который будет создан, пока все не запустится, и, следовательно, поле mc.results будет обновлено.
Я понимаю, что я не рассказал вам подробностей моей повседневной рутины и надеюсь, что это не имеет значения, и что ошибка, которую я делаю, заключается в моей интерпретации того, что делает многопроцессорность. Заранее благодарим за любую помощь, которую вы можете предложить.