我使用Python的multiprocessing模块在Monte Carlo代码中实现了一些简单的并行计算。我的代码看起来像这样:
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字段会得到更新。我意识到我没有告诉你我的蒙特卡罗例程的详细信息,并希望这并不重要,而我犯的错误是对multiprocessing做法的理解问题。提前感谢您提供的任何帮助。