我使用以下代码片段来测试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 plus http://nbviewer.ipython.org/5500077
的评论答案 0 :(得分:0)
引擎分布在核心上的哪种方式?
我们在IPython中没有具体说明这一点。这完全由操作系统及其调度程序处理。
如果您使用的是直接视图而不是负载平衡视图,我仍然非常惊讶于计算时间会随着引擎的数量而减少。