Python - Processus asynchrones

Table des matières
Au moment où nous entrons dans le monde des traitements multiples, des serveurs et des requêtes variées, nous devons savoir qu'il existe différents types de réponses ou de comportements, les synchrone et le asynchrone.
La première consiste à servir une requête selon une théorie des files d'attente, fifo, lifo etc. C'est-à-dire que tant que le processus n'est pas terminé, il ne passe pas à un autre, vu ce comportement, ce ne serait pas un problème pour un programme qui gère Fils car il peut générer plusieurs Fils pour chaque demande qui remplissent des fonctions spécifiques.
Ensuite, nous avons l'asynchrone qui nous aide à servir avec un même fil plusieurs requêtes en fonction de leur statut, de sorte que si plusieurs requêtes sont exécutées pendant que l'une traite quelque chose, nous pouvons nous occuper de la suivante ou peut-être ne devrions-nous même pas attendre une requête pour envoyer des données au client :

Comme on le voit sur l'image, une simulation du fonctionnement d'un chat est faite où elle est revue jusqu'à ce qu'il y ait un message à transmettre.
Processus d'entrée et de sortie asynchrones
Lorsqu'on fait une lecture asynchrone des requêtes du client, il n'est pas nécessaire que l'on fasse la lecture complète du message dans un premier temps, mais on peut le voir petit à petit, grâce à la vitesse de traitement.
Pour le travail asynchrone dans Python Nous avons deux fonctions qui peuvent nous aider, l'une est sélectionner et l'autre est sondage, dont ce dernier n'est disponible que pour les environnements UNIX, cela pourrait donc être une condition que nous mettions une limite si nous voulons faire un programme multiplateforme, cependant c'est la solution qui évolue le mieux, nous devons donc prendre ces détails en compte.
La sélectionner la fonction prend 3 séquences comme arguments obligatoires, avec un quatrième argument qui est facultatif et contient le temps libre En secondes, les séquences sont des connexions que nous allons attendre, étant 3 elles correspondent aux suivantes : entrée, sortie, conditions exceptionnelles (erreurs, exceptions, etc.).
Si nous ne spécifions pas de temps libre, la fonction sélectionner il attendra jusqu'à ce qu'une des séquences soit prête à l'action, sinon si nous spécifions un timeout, les blocs attendront le temps correspondant. Les valeurs renvoyées par la fonction représentent un sous-ensemble actif de chaque séquence, par exemple la première séquence renvoyée sera une séquence d'entrée où nous aurons quelque chose à lire.
Voyons l'exemple de code suivant sur la façon d'implémenter un serveur en utilisant le sélectionner la fonction:
 import socket, sélectionnez s = socket.socket () host = socket.gethostname () port = 1234 s.bind ((host, port)) s.listen (5) entrées = [s] tandis que True : [b] rs, ws, es = select.select (inputs, [], []) [/ b] for r in rs: if r is s: c, addr = s.accept () print 'Got connection from', addr input.append (c) else : essayez : données = r.recv (1024) déconnecté = pas de données sauf socket. 

Comme nous pouvons le voir, lorsque nous appelons le sélectionner la fonction en passant les 3 séquences obligatoires, on passe la variable contributions, qui est lié à ce que le serveur capture en écoutant sur le port TCP 1234, puis on itère pour afficher l'information.
Comme nous pouvons le voir, cet aspect de la mise en œuvre est assez simple et la limite sera donnée par notre créativité lors de la réalisation du programme.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave