我想并行化我的 MCTS 程序。做这件事有很多种方法:
- 叶并行化,其中每个叶都被并行扩展和模拟。
- 根并行化,其中每个线程/进程创建一个单独的树,当完成一些模拟时,将树组合起来以提供更好的统计信息
- 树并行化,所有线程/进程共享同一棵树,每个线程/进程探索树的不同部分。
(如果我的解释不清楚,请查看这篇关于 MCTS 的评论文章。在第 25 页,详细描述了并行化 MCTS 的不同方法。)
问题:
由于 Python中的多处理必须创建单独的子进程,因此 2. 根并行化非常适合,而我假设 3. 树并行化是不可行的。(因为对于树并行化,所有子进程都必须共享同一棵树——这在 Python 中很难做到)
我对么?我浏览了多处理文档,如果我理解正确,似乎可以在某些基本数据类型的子进程之间来回传递信息,但由于速度等原因,非常不鼓励这样做。
如果是这样,Python 中的树并行化将是一个坏主意,对吧?