web-dev-qa-db-fra.com

Que signifie In [*] dans IPython Notebook et comment le désactiver?

J'utilise Windows 7, Python 2.7.9 et la dernière version d'IPython 3.1.

J'ai exécuté %python dans un bloc-notes IPython et la cellule. Au lieu de renvoyer la version Python, elle ne s'est pas exécutée. Elle a sauté sur une nouvelle ligne et imprimé un In [*] au lieu d'un numéro de ligne. Maintenant, aucune ligne n'est en cours d'exécution dans ipython, tout est ignoré lorsque j'essaie d'exécuter une valeur de cellule.

Quelqu'un sait ce qui s'est passé?

31
Isak La Fleur

Le noyau est occupé. Allez dans le menu Kernel et cliquez sur Interrupt. Si cela ne fonctionne pas, cliquez sur Restart. Vous devez entrer dans une nouvelle cellule et appuyer sur Shift + Enter pour voir si cela a fonctionné.

37
Mike Müller

Le problème qui occupe votre noyau peut être une ligne de code spécifique. Si tel est le cas, votre ordinateur aura peut-être besoin de temps pour passer par cette ligne. 

Pour savoir quelle ligne ou quelles lignes prennent si longtemps, comme l'a mentionné Mike Muller, vous devez redémarrer le programme ou interrompre le noyau. Ensuite, parcourez avec précaution une ligne à la fois jusqu'à atteindre la première avec l'astérisque. 

Si vous ne redémarrez pas ou n'interrompez pas votre programme occupé, vous ne pourrez pas dire quelle ligne est la ligne posant problème et quelle ligne ne l'est pas, car elle restera occupée tant qu'elle fonctionnera sur cette ligne posant problème. Il continuera à vous donner l'astérisque sur chaque ligne jusqu'à ce qu'il ait fini d'exécuter cette ligne de code, même si vous recommencez au début. Ceci est extrêmement déroutant, car les lignes qui ont été exécutées et la sortie produite perdent soudainement leur sortie lorsque vous les exécutez lors de la deuxième passe. Le fait que vous puissiez apporter des modifications à votre code lorsque le noyau est occupé est également source de confusion, mais vous ne pouvez obtenir aucune nouvelle sortie tant qu'elle ne sera plus libre.

Il n'est pas nécessaire que votre code soit erroné pour provoquer cela. Vous avez peut-être simplement inclus une commande fastidieuse. Bootstrapping a causé cela pour moi. 

Si votre code correspond à ce qu'il doit être, peu importe la ligne concernée, il vous suffit de donner à votre code le temps de s'exécuter. La principale raison pour savoir quelle est la ligne de problème serait de savoir si certaines lignes étaient consommables ou si vous obteniez l'astérisque pour une autre raison et que vous deviez l'exclure.

Si vous écrivez du code sur un service Internet dont le délai expire lorsque vous ne le saisissez pas, votre code n'aura peut-être pas assez de temps pour terminer son exécution si vous attendez simplement. Faire défiler toutes les quelques minutes est généralement suffisant pour empêcher ces pages d’être dépassées.

1
Elle

Pour que je puisse résoudre ce problème, je devais arrêter mon programme anti-virus.

1
Chirag