---
jupytext:
  text_representation:
    extension: .md
    format_name: myst
    format_version: 0.13
kernelspec:
  display_name: Python 3 (ipykernel)
  language: python
  name: python3
learning:
  objectives:
    understand: [noyau]
  prerequisites:
    understand: [carnet interactif, cellule]
---

+++ {"nbgrader": {"grade": false, "grade_id": "cell-68267a047d81d6a0", "locked": true, "schema_version": 3, "solution": false, "task": false}}

# TP : Jupyter : le noyau

:::{admonition} Exercice : à quoi sert le noyau
Cliquez sur la cellule suivante puis exécutez la en appuyant sur les
touches <kbd>Maj</kbd>+<kbd>Entrée</kbd> :
:::

```{code-cell} ipython3
1 + 1
```

:::{admonition} Explication
:class: hint

Techniquement parlant, le navigateur web a envoyé le contenu `1 + 1`
de la cellule à un {definiendum}`noyau` qui l'a {definiendum}`exécuté
<exécution>`, avant de renvoyer le résultat à afficher. Le noyau que
nous utilisons ici (`Python 3`) permet de travailler en `Python`. Il
existe des noyaux pour de nombreux langages de programmation et
systèmes de calculs : Julia, Python, R -- d'où le nom de Jupyter --,
mais aussi des dizaines d'autres dont C++ ou SageMath.

:::

+++

:::{admonition} Exercice : changer de noyau
À un moment donné, une feuille Jupyter est reliée à un unique
noyau. Le nom de ce noyau est affiché en haut à droite de la feuille
de travail. Cliquez dessus pour afficher la liste des noyaux
disponibles sur votre instance de Jupyter. Essayez la cellule
ci-dessus avec ces autres noyaux. Puis sélectionnez à nouveau le noyau
Python.
:::

+++ {"nbgrader": {"grade": false, "grade_id": "cell-c6929b395e52ee35", "locked": true, "schema_version": 3, "solution": false, "task": false}}

:::{admonition} Exercice : relancer le noyau
1.  Exécutez les deux cellules ci-dessous avec <kbd>Maj</kbd>-<kbd>Enter</kbd> :
:::

```{code-cell} ipython3
---
deletable: false
editable: false
nbgrader:
  grade: false
  grade_id: noyaux1C1
  locked: true
  schema_version: 3
  solution: false
tags: [skip-execution]
---
i = 0
while True:
  i = i + 2
```

```{code-cell} ipython3
---
deletable: false
editable: false
nbgrader:
  grade: false
  grade_id: noyaux1C2
  locked: true
  schema_version: 3
  solution: false
---
1 + 1
```

:::{admonition} Exercice (suite)
2.  La première cellule contenant une boucle infinie, l'exécution est
    maintenant bloquée. Vous noterez notamment l'étoile dans le
    `In[*]` qui indique que les deux cellules sont en attente de la
    fin du calcul -- fin qui n'arrivera ici jamais.  

    Pour pouvoir reprendre la main, il faut arrêter ou redémarrer le
    noyau.

3.  Relancez le noyau, en allant dans la barre de Menu «Noyau» ou
    «Kernel», ou bien avec le raccourci clavier
    <kbd>Esc</kbd>-<kbd>0</kbd>-<kbd>0</kbd>.
  
4.  Réessayez l'exercice, cette fois en arrêtant le noyau.
:::

+++ {"nbgrader": {"grade": false, "grade_id": "cell-2a38289b226028cc", "locked": true, "schema_version": 3, "solution": false, "task": false}}

:::{admonition} Bilan
Dans cette feuille, vous avez vu comment changer, arrêter, ou relancer
le noyau. Cela permet notamment de changer de langage de
programmation, de sortir d'une boucle infinie, ou de repartir sur une
base neuve en oubliant les calculs précédents.
:::
