Je me demande simplement s'il y a du code python ou des magies que je peux exécuter pour redémarrer le cluster ipython. Il semble que chaque fois que je change mon code, il doit être redémarré.Puis-je redémarrer un cluster iPython à partir d'un ordinateur portable?
Répondre
Une idée simple, semble trop pour la production "aki":
Configuration du Client
et définir une fonction simple pour les tests.
import ipyparallel as ipp
c = ipp.Client()
dv = c[:]
# simple function
@dv.remote(block=True)
def getpid():
import os
return os.getpid()
getpid()
[1994, 1995, 1998, 2001]
Définir une fonction pour redémarrer le cluster. shutdown
avec targets='all'
et hub=True
devrait tuer le cluster entier. Ensuite, démarrez un nouveau cluster avec la commande magique !
ou %sx.
import time
def restart_ipcluster(client):
client.shutdown(targets='all', hub=True)
time.sleep(5) # give the cluster a few seconds to shutdown
# include other args as necessary
!ipcluster start -n4 --daemonize
time.sleep(60) # give cluster ~min to start
return ipp.Client() # with keyword args as necessary
Un inconvénient de cette approche est que le DirectView doit être réaffecté et toute fonction décorée avec dv.remote
ou dv.parallel
doit être ré-exécuté.
c = restart_ipcluster(c)
dv = c[:]
@dv.remote(block=True)
def getpid():
import os
return os.getpid()
getpid()
[3620, 3621, 3624, 3627]
Lecture de la source pour ipyparallel Client
, la méthode shutdown
mentionné ci-dessus a un argument mot-clé, restart=False
, mais il est actuellement pas mis en œuvre. Peut-être que les développeurs travaillent sur une méthode fiable.
Merci pour la suggestion; Je vais essayer. Y a-t-il une raison pour laquelle, par conception, l'ordinateur principal n'a aucun contrôle de processus? – cjm2671
Je me demande s'il y a une extension de cahier qui pourrait faire ceci mais j'aurais des doutes au sujet de l'exécution de code dans le cahier qui le relance, pourrait résulter en une boucle infinie de relance-exécution. –