Fonctions asynchrones Flashcards

1
Q

Qu’est-ce que la programmation asynchrone?

A

Un programme exécuté en asynchrone, tout comme un programme synchrone, débute l’éxécution des tâches qui le composent successivement. La différence réside dans l’attente de la complétion de chaque tâche. Tandis qu’un programme synchrone attend que l’exécution de chaque tâche soit complétée avant d’exécuter une autre tâche, un programme asynchrone débute l’exécution des tâches les unes à la suite des autres sans attendre. La notion de programmation concurrente est ainsi au coeur de la programmation asynchrone, puisque les tâches sont exécutées au sein d’un même intervalle de temps et non pas de façon séquentielle

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quelle est l’utilié d’un programme synchrone?

A

La programmation asynchrone permet d’accélérer le temps d’exécution et également d’augmenter la réactivité d’un programme puisqu’elle le rend plus adaptatif: on parle de scalabilité.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Comment est géré la programmation asynchrone chez Python?

A

La gestion de la programmation asynchrone sur Python est particulière puisqu’elle demande de prendre en compte le GIL, Global Interpreter Lock en anglais, verrou qui assure un accès unique à l’interpréteur Python pour une question de gestion de mémoire. En effet, puisque les threads qui composent un même processus partagent la même mémoire, ce verrou permet d’éviter les erreurs générées par ces accès concurrentiels.

Bien que la création de plusieurs threads soit une des façons les plus répandues de gérer la programmation asynchrone, il existe d’autres moyens d’y parvenir. L’utilisation des coroutines avec une syntaxe async/await est une des solutions privilégiée. Il est important de noter qu’une coroutine appartient à un thread et qu’un thread appartient à un processus comme l’illustre l’exemple ci-dessous.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qu’est-ce qu’une coroutine?

A

Les coroutines sont des fonctions qui retournent des objets coroutines. La documentation Python définit les coroutines comme une forme généralisée de fonction. Ainsi tandis qu’une fonction standard commence son exécution en un point et termine par un autre, les coroutines possèdent plusieurs points d’entrées et de sorties et peuvent également arrêter puis reprendre leur exécution. Les coroutines sont implémentées en utilisant l’instruction async def et possèdent leur propre syntaxe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qu’est-ce qu’un objet attendable?

A

Afin de mieux comprendre le fonctionnement de la librairie il est important de définir ce qu’est un objet attendable, ou awaitable en anglais. On parle d’objet attendable pour désigner des objets qui sont utilisables avec l’expression await. Les coroutines sont des attendables mais il existe deux autres sortes d’attendables : les tâches et les futures. Tandis que les tâches, tasks en anglais, permettent la planification des coroutines et ainsi leur exécution concurrente, les futures désignent les résultats d’une opération asynchrone, telle que le résultat d’une coroutine. Au sein de ce notebook nous verrons les implémentations pour des coroutines et des tâches.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qu’est-ce qu’un Event loop?

A

Une boucle d’évènements ou event loop correspond selon la documentation Python au centre d’exécution fourni par asyncio. Au travers de la boucle d’évènements, les tâches asynchrones sont programmées et exécutées par itération. C’est donc grâce à cette boucle d’évènements que l’exécution concurrentielle est permise: chaque coroutine est exécutée jusqu’à ce que l’instruction await suivi d’un attendable est rencontrée où un résultat potentiel est attendu. Il est alors permis d’utiliser ce temps d’attente pour exécuter autre chose au sein de la boucle d’évènements, ce qui permet de rentabiliser ce temps d’attente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qu’est-ce qu’une Subroutine?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quel est l’avatage es courontine?

A

Les coroutines sont des implémentations assez efficaces lorsqu’il s’agit de programmation concurrente. Elles permettent en effet d’utiliser les temps d’attente afin de démarrer d’autres instructions et donc d’accélérer le temps de complétion. Assez simples à implémenter, elles peuvent être utilisées à la place des threads ou en combinant les deux. Il faut néanmoins bien garder en tête que les coroutines ne permettent pas d’exécuter du code en parallèle comme le permettent les threads ou les processus.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly