J'expérimente avec IPython.parallel
et je veux juste lancer plusieurs commandes shell sur différents moteurs.IPython.parallel n'utilise pas le multicœur?
Je le portable suivant:
cellulaire 0:
from IPython.parallel import Client
client = Client()
print len(client)
5
et de lancer les commandes:
Cellule 1:
%%px --targets 0 --noblock
!python server.py
Cell 2:
%%px --targets 1 --noblock
!python mincemeat.py 127.0.0.1
Cellule 3:
%%px --targets 2 --noblock
!python mincemeat.py 127.0.0.1
Ce qu'il fait est qu'il utilise la mincemeat
mise en œuvre de MapReduce. Quand je lance le premier !python mincemeat.py 127.0.0.1
il utilise à peu près 100% d'un noyau, puis quand je lance le second, il tombe à 50% chacun. J'ai 4 cœurs (+ coeurs virtuels) sur la machine et je peux les utiliser lors du lancement directement depuis le terminal mais pas dans le portable.
Y a-t-il quelque chose qui me manque? Je voudrais utiliser un noyau par commande !python mincemeat.py 127.0.0.1
.
EDIT:
Pour plus de clarté, voici une autre chose qui est de ne pas utiliser plusieurs cœurs:
Mobitel 1:
%%px --targets 0 --noblock
a = 0
for i in xrange(100000):
for j in xrange(10000):
a += 1
Cell 2:
%%px --targets 0 --noblock
a = 0
for i in xrange(100000):
for j in xrange(10000):
a += 1
Je suppose qu'il me manque quelque chose. Je crois que ces deux cellules devraient fonctionner un noyau différent si disponible. Cependant, cela ne semble pas être le cas. Encore une fois, l'utilisation du processeur montre qu'ils partagent le même noyau et utilisent 50% de celui-ci. Qu'ai-je fait de mal?
Je ne suis pas sûr de l'utilité d'utiliser IPython.parallèle ici, lorsque vous exécutez simplement des commandes de shell sur une seule machine à la fois, mais il est peu probable qu'IPython.parallel puisse interférer avec le nombre de cœurs utilisés par vos sous-processus. A quoi cela ressemble-t-il si vous faites ce même exemple sans IPython.parallel (puisqu'il ne s'agit que de trois appels de shell d'une ligne)? – minrk
Bonjour @mnirk. Sans Ipython.parallel les cellules bloquent, c'est beaucoup moins intéressant. Pour clarifier les choses, je ne veux pas exécuter un processus sur des noyaux différents, je préférerais que chaque processus ait un noyau. C'est pourquoi j'assigne chaque commande à une cible différente. Cependant, il semble que tous les moteurs (cibles 0 à 4) tournent sur le même noyau. – zermelozf
Je veux dire le faire en trois sessions terminales simples - c'est tout ce que vous faites en ce moment, en exécutant une seule commande shell en trois sessions distinctes. IPython n'est pas vraiment impliqué du tout. – minrk