我正在试验 IPython.parallel
并且只想在不同的引擎上启动几个shell命令。
我有以下笔记本:
单元格0:
from IPython.parallel import Client
client = Client()
print len(client)
5
并启动命令:
单元格1:
%%px --targets 0 --noblock
!python server.py
单元格2:
%%px --targets 1 --noblock
!python mincemeat.py 127.0.0.1
单元格3:
%%px --targets 2 --noblock
!python mincemeat.py 127.0.0.1
它的作用是使用它 mincemeat
MapReduce的实现。当我发布第一个 !python mincemeat.py 127.0.0.1
它使用大约100%的一个核心,然后当我启动第二个核心时,每个核心降低到50%。我在机器上有4个核心(+虚拟核心),可以直接从终端启动而不是在笔记本电脑中使用它们。
有什么我想念的吗?我想每个使用一个核心 !python mincemeat.py 127.0.0.1
命令。
编辑:
为清楚起见,这是另一个不使用多核的东西:
单元格1:
%%px --targets 0 --noblock
a = 0
for i in xrange(100000):
for j in xrange(10000):
a += 1
单元格2:
%%px --targets 0 --noblock
a = 0
for i in xrange(100000):
for j in xrange(10000):
a += 1
我想我错过了一些东西。我相信这两个单元应该运行一个不同的核心(如果可用)。但是,似乎并非如此。 CPU使用率再次显示它们共享相同的核心并使用50%的核心。我做错了什么?