Я реализовал простой параллелизм в коде Монте-Карло, используя модуль многопроцессорности 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]
Однако, когда я смотрю на список результатов, кажется, что итераторы Монте-Карло еще даже не запустились. Я знаю, что они есть, потому что я могу заставить процессы распечатать информацию во время шагов Монте-Карло. Так что я делаю что-то тупое. Я думал, что job.join () предотвратит создание списка результатов до тех пор, пока все не будет запущено, и поэтому поле mc.results будет обновлено.
Я понимаю, что не рассказал вам подробностей моей процедуры в Монте-Карло, и надеюсь, что это не имеет значения, и что я делаю ошибку в моей интерпретации того, что делает многопроцессорность. Заранее благодарим за любую помощь, которую вы можете предложить.