我使用以下代码片段来测试 IPython.parallel 模块的性能:
dview = c[:] #use all engines
counter = time.time()
result = dview.map_sync(fib, range(4000)) #fib return the nth Fibonacci number
counter = time.time() - counter
这个测试我使用了多达 30 个“引擎”,我从 IPython 笔记本开始。令人惊讶的是,即使我超过了 CPU 内核的限制(我有 4 个内核),性能也会随着引擎(实际上是完整的 IPython 解释器)的数量而增加(非线性)。我一直认为一个引擎将与一个核心相关联,使用更多引擎作为核心只会导致开销。这里到底发生了什么?引擎以何种方式分布在内核上?
编辑:解决方案是来自 Matt 的评论加上http://nbviewer.ipython.org/5500077