IPython.parallel не использует многоядерный?
Я экспериментирую сIPython.parallel
и просто хочу запустить несколько команд оболочки на разных движках.
У меня есть следующая тетрадь:
Ячейка 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
Я полагаю, я что-то упустил. Я считаю, что эти две ячейки должны работать с разными ядрами, если они доступны. Однако, похоже, это не так. Опять же, использование процессора показывает, что они используют одно и то же ядро и используют его на 50%. Что я сделал не так?