Maison >développement back-end >Tutoriel Python >Comment appliquer la dérivation asynchrone Python
Quand nous pensons à « pythonique », les compréhensions telles que les compréhensions de listes et de dictionnaires sont une fonctionnalité de Python.
C'est une façon pour nous d'effectuer des boucles, contrairement à de nombreux autres langages.
Asyncio nous permet d'utiliser des compréhensions asynchrones.
Nous pouvons utiliser des compréhensions asynchrones pour parcourir des générateurs asynchrones et des itérateurs asynchrones via des expressions "async for".
La dérivation asynchrone est une version asynchrone de la dérivation classique. Asyncio prend en charge deux types de compréhensions asynchrones : les compréhensions « asynchrones pour » et les compréhensions « en attente ».
Avant d'examiner chacun d'entre eux, passons d'abord en revue la dérivation classique.
Les compréhensions vous permettent de créer des collections de données telles que des listes, des dictionnaires et des ensembles de manière concise. Les compréhensions de liste permettent de créer une liste à partir d'une expression for dans une nouvelle expression de liste.
... # create a list using a list comprehension result = [a*2 for a in range(100)]
prend également en charge les compréhensions pour créer des dictionnaires et des ensembles.
... # create a dict using a comprehension result = {a:i for a,i in zip(['a','b','c'],range(3))} # create a set using a comprehension result = {a for a in [1, 2, 3, 2, 3, 1, 5, 4]}
Les compréhensions asynchrones permettent la création de listes, d'ensembles ou de dictionnaires à l'aide d'expressions "async for" avec des objets itérables asynchrones.
... # async list comprehension with an async iterator result = [a async for a in aiterable]
Cela créera et planifiera des coroutines ou des tâches selon les besoins et mettra leurs résultats dans une liste.
Rappelez que l'expression "async for" ne peut être utilisée que dans les coroutines et les tâches.
Rappelez également qu'un itérateur asynchrone est un itérateur qui produit un objet attendu.
L'expression "async for" permet à l'appelant de parcourir un itérateur asynchrone d'objets attendus et de récupérer les résultats de chaque objet.
En interne, la boucle async for analysera ou attendra automatiquement chaque coroutine de répartition attendue selon les besoins.
Les générateurs asynchrones implémentent automatiquement des méthodes d'itérateur asynchrone et peuvent également être utilisés pour la dérivation asynchrone.
... # async list comprehension with an async generator result = [a async for a in agenerator]
L'expression « Attendre » peut également être utilisée dans la compréhension d'une liste, d'un ensemble ou d'un dictionnaire, appelée attente de compréhension.
Comme les compréhensions asynchrones, il ne peut être utilisé que dans des coroutines ou des tâches asynchrones.
Cela permet la création de structures de données telles que des listes en suspendant et en attendant une séquence d'objets attendus.
... # await list compression with a collection of awaitables results = [await a for a in awaitables]
Cela créera une liste de résultats en attendant tour à tour chaque objet attendu.
La coroutine actuelle sera suspendue pour exécuter les objets attendus de manière séquentielle, ce qui est différent de leur exécution simultanée à l'aide de asyncio.gather(), et peut être plus lente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!