Habituellement, si la connexion réseau est perdue ou si le navigateur Web est fermé pendant que les cellules fonctionnent, je dois réexécuter les cellules depuis le début.
Pour gérer cela, j'ai converti .ipynb en .py et utilisé 'nohup python .py'
Existe-t-il un moyen d'empêcher l'exécution des cellules de s'arrêter comme rien?
Merci d'avance.
4 Réponses :
Pour mon cas:
jupyter --version 4.4.0 jupyter notebook --version 5.7.4
Je lance un notebook jupyter sur un serveur et je me connecte à celui-ci en utilisant mon ordinateur portable. Même si la connexion est perdue ou si le navigateur est fermé, les cellules en cours d'exécution ne seront pas arrêtées. Le processus de téléchargement de fichiers exécuté dans le terminal ne sera pas non plus influencé.
Puis-je en savoir plus sur votre situation?
Par exemple, quelle version utilisez-vous et où exécutez-vous votre notebook jupyter, en local ou sur un serveur?
Vous pouvez démarrer votre processus dans un autre fil de discussion.
def network_call(): # Do something here threading.Thread(target=network_call).start() move_ahead()
Selon https://github.com/jupyter/notebook/issues/2446 a>
Tout ce qui est déjà en cours d'exécution dans le notebook continuera de fonctionner, et le noyau pour lequel il a démarré le restera - donc il ne perdra pas vos variables. Cependant, toute sortie produite alors que le bloc-notes n'est pas ouvert dans un onglet de navigateur est perdue; il n'y a pas de moyen facile de changer cela tant que le serveur de notebook n'est pas en mesure de suivre l'état du document, ce qui est prévu depuis des lustres.
Lorsque vous fermez l'onglet, cela ne signifie pas que le processus est terminé, il continue à fonctionner en arrière-plan sans sortie.
Je ne sais pas s'il existe un moyen d'y parvenir maintenant, mais j'ai constaté que si vous utilisez jupyterhub , vous pouvez continuer à exécuter ipython
un onglet terminal , lorsque l'onglet a été fermé ou passer à un autre appareil (fermer la page Web précédente), tout afficher réservé. Peut-être que screen
ou tmux
est meilleur?
le code fonctionne toujours, seule la sortie / erreur standard est perdue. par exemple, si j'ai une cellule contenant:
{1: 42}
et que j'enregistre le bloc-notes, exécutez cette cellule, fermez l'onglet du navigateur, attendez 5 secondes, puis rouvrez l'onglet, je peux exécuter:
Out
(c'est la variable où aboutissent les résultats de l'exécution des cellules) Je vois:
from time import sleep sleep(5) 42
ie le code s'est terminé
Avez-vous essayé d'exécuter votre processus sur un fil différent?