我今天遇到了这个,不知道为什么。我有几个函数链接在一起,作为更大管道的一部分执行一些耗时的操作。我已经将这些包括在这里,尽可能地简化为一个测试示例。问题是当我直接调用一个函数时,我得到了预期的输出(例如,5 个不同的树)。但是,当我使用 apply_async(或应用,没关系)在多处理池中调用相同的函数时,我得到 5 棵树,但它们都是相同的。
我已经在 IPython 笔记本中记录了这一点,可以在这里查看:http: //nbviewer.ipython.org/gist/cfriedline/0e275d528ff1a8d674c6
在单元格 91 中,我创建了 5 棵树(每棵树有 10 个提示),并返回两个列表。第一个包含非多处理树,第二个来自 apply_async。
在单元格 92 中,您可以看到在没有多重处理的情况下创建树的结果,在单元格 93 中,可以看到使用多重处理的结果。
我期望在两个测试之间总共有 10 种不同的树,但是所有的多处理树都是相同的。对我来说意义不大。
事物的相关版本:
- Linux 2.6.18-238.12.1.el5 x86_64 GNU/Linux
- Python 2.7.6 :: Anaconda 1.9.2(64 位)
- IPython 2.0.0
- Rpy2 2.3.9
谢谢!克里斯