我正在试验IPython.parallel
,只想在不同的引擎上启动几个shell命令。在
我有以下笔记本:
第0单元格:
from IPython.parallel import Client
client = Client()
print len(client)
5
然后启动命令:
单元格1:
^{pr2}$单元格2:
%%px --targets 1 --noblock
!python mincemeat.py 127.0.0.1
单元格3:
%%px --targets 2 --noblock
!python mincemeat.py 127.0.0.1
它所做的是使用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%的内核。我做错什么了?在
聊天讨论摘要:
CPU affinity是一种将进程固定到特定CPU核心的机制, Python进程在这里的进程数是numpy,它有时会导致CPU的导入, 作为链接到特定BLAS库的结果。通过运行此单元,可以取消固定所有引擎:
它使用
multiprocessing.cpu_count
来获取CPU的数量,然后将每个引擎与所有CPU关联起来。在IPython笔记本exploring the issue。在
相关问题 更多 >
编程相关推荐