3 votes

Jupyter comment exécuter des cellules en arrière-plan ?

En général, si la connexion réseau est perdue ou si le navigateur web est fermé pendant que les cellules sont en cours d'exécution, je dois relancer les cellules depuis le début.

Pour résoudre ce problème, j'ai converti .ipynb en .py et j'ai utilisé 'nohup python .py'

Existe-t-il un moyen d'empêcher les cellules en cours d'exécution de s'arrêter comme dans le cas de nohup ?

Je vous remercie d'avance.

4voto

Kshitij Saxena Points 223

Vous pouvez commencer votre processus dans un autre fil de discussion.

def network_call():
    # Do something here

threading.Thread(target=network_call).start()

move_ahead()

2voto

Jay Points 31

Selon le https://github.com/jupyter/notebook/issues/2446

Tout ce qui est déjà en cours d'exécution dans l'ordinateur portable continuera à tourner, et le noyau qu'il a démarré pour cela restera en cours d'exécution - il ne perdra donc pas vos variables. Cependant, toute sortie produite alors que le carnet n'est pas ouvert dans un onglet du navigateur est perdue ; il n'y a pas de moyen facile de changer cela tant que le serveur du carnet n'est pas capable de suivre l'état du document, ce qui est prévu depuis longtemps.

Lorsque vous fermez l'onglet, cela ne signifie pas que le processus est terminé, il continue à fonctionner en arrière-plan sans résultat.

Je ne sais pas s'il existe un moyen d'y parvenir aujourd'hui, mais j'ai découvert que si vous utilisez jupyterhub vous pouvez poursuivre l'exécution ipython a terminal lorsque l'onglet est fermé ou que l'on passe à un autre périphérique (fermeture de la page web précédente), toutes les sorties sont réservées. Peut-être screen o tmux est meilleure ?

0voto

WOET Points 25

Dans mon cas :

jupyter --version
4.4.0
jupyter notebook --version
5.7.4

Je fais tourner un notebook jupyter dans un serveur, et je m'y connecte à l'aide de mon ordinateur portable. Même si la connexion est interrompue ou si le navigateur est fermé, les cellules en cours d'exécution ne sont pas arrêtées. Le processus de téléchargement de fichiers exécuté dans le terminal n'est 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 ?

0voto

Sam Mason Points 1389

Le code s'exécute toujours, mais la sortie standard/erreur est perdue. par exemple, si j'ai une cellule contenant :

from time import sleep
sleep(5)
42

et que j'enregistre le cahier, que je lance cette cellule, que je ferme l'onglet du navigateur, que j'attends 5 secondes, puis que je rouvre l'onglet, je peux lancer :

Out

(il s'agit de la variable où les résultats de l'exécution des cellules se retrouvent) Je vois :

{1: 42}

c'est-à-dire que le code a été exécuté jusqu'au bout

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X