我使用了以下代码片段来测试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笔记本上开始的。令人惊讶的是,性能(非线性)随着引擎(实际上是完全的IPython解释器)数量的增加而增长,即使我超过了我的CPU-core的限制(我有4个核心)。我一直认为一个引擎会关联到一个核心,使用更多的引擎作为核心只会导致开销。这里到底发生了什么?发动机是以什么方式分布在内核上的?
编辑:解决方案是来自Matt加上http://nbviewer.ipython.org/5500077的评论
发布于 2013-05-26 01:22:38
引擎在内核上的分布方式是什么?
我们在IPython中没有对此做任何具体的事情。这完全由操作系统及其调度程序处理。
尽管如此,如果你使用的是直接视图而不是负载平衡视图,我还是很惊讶地发现计算时间随着引擎数量的增加而减少。
https://stackoverflow.com/questions/16751536
复制相似问题