Maison  >  Article  >  développement back-end  >  Programmation asynchrone Python : Révéler l'essence de la programmation asynchrone, de l'entrée à la maîtrise

Programmation asynchrone Python : Révéler l'essence de la programmation asynchrone, de l'entrée à la maîtrise

WBOY
WBOYavant
2024-02-26 10:01:111220parcourir

Python异步编程: 揭秘异步编程的精髓, 从入门到精通

Pour réseaula même opération pythonla magie est en ligne ne veut pas dire qu'il y a toujours quelque chose à faire et rien à faire à l'ère en ligne tant que quelqu'un est humble en comparaison s'il entend asyncPython Tous les problèmes avec le code réseau peuvent être résolus via un io asynchrone. Vous n'avez pas bien compris que nous devons traiter les données sur Socket, car si nous devons attendre les données du socket, nous pouvons utiliser des IO asynchrones par exemple. , nous pouvons vérifier le socket avant d'appeler la méthode socket(). Qu'elle puisse être utilisée pour envoyer des données, il n'est pas nécessaire d'attendre que la réponse nous revienne, car la boucle d'interprétation de python est que nous pouvons renvoyer le socket. objet immédiatement après avoir utilisé nous-mêmes la méthode socket(), puis chaque fois que nous vérifions si la socket peut envoyer des données, si elle le peut, nous utilisons la méthode send() pour envoyer des données

Nécessite un support de socket

Parce que nous utilisons des sockets, nous devons être plus avancés. Nous devons nous assurer que la version Python utilise le module socket car il s'agit de notre élément de base dans la bibliothèque standard python. Parce que le module socket garantit que nous pouvons travailler sur n'importe quel . système d'exploitation qui prend en charge les sockets. Nous avons également besoin du module socket pour garantir que nous pouvons travailler sur n'importe quel système d'exploitation prenant en charge les sockets. Nous avons également besoin du module socket pour garantir que le module socket ne peut être utilisé que lors d'une connexion socket réelle. . Mais ne vous inquiétez pas, cela n'arrivera jamais car la boucle de l'interpréteur Python garantira que le module socket est toujours disponible.

Prises asynchrones

Nous avons vu pourquoi nous avons besoin du support des sockets. Voyons maintenant comment les sockets peuvent nous aider dans notre tâche. Comme dans le premier exemple que nous avons souligné précédemment, nous devons demander explicitement à la boucle de l'interpréteur Python de voir si le socket est disponible avant de traiter le socket. data. car nous n'avons pas à attendre que la réponse nous revienne car la boucle d'interprétation Python garantira que le module socket est toujours disponible. Nous n'avons pas besoin d'attendre que le socket fonctionne car l'interprétation Python. loop garantira que le module socket est toujours disponible

.

async et wait

La boucle d'interprétation Python a deux méthodes intégrées asynchrones et aw

ait async représente une tâche asynchrone. Par exemple, dans l'exemple ci-dessus, nous pouvons attendre que la connexion soit terminée au lieu d'établir la connexion immédiatement. une méthode intégrée wait qui est responsable du travail réel. Pour les fonctions d'attente telles que l'exemple ci-dessus, nous devons appeler la méthode connect() pour effectuer le travail réel. Exemple

L'exemple suivant montre comment utiliser asyncio pour créer une connexion socket

import socket
import selectors

async def connect():
sock = socket()
sock = sock()
sel = selectors()
sel = sel()
sel = sel()
sel = sel()
sel = sel()
sel = sel()

Résumé

Asynchronous IO est un moyen de nous aider à effectuer des opérations sur socket sans attendre que la réponse nous revienne. Cette méthode utilise la méthode selector pour appeler de manière asynchrone la méthode connect(), puis attend que le résultat revienne via wait avant d'en faire d'autres. travail

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer