Maison > développement back-end > Tutoriel Python > Comment la bibliothèque multitraitement de Python peut-elle simplifier la communication interprocessus ?

Comment la bibliothèque multitraitement de Python peut-elle simplifier la communication interprocessus ?

DDD
Libérer: 2024-10-29 11:18:02
original
1059 Les gens l'ont consulté

How can Python's multiprocessing library simplify Interprocess Communication?

Communication interprocessus en Python

La communication interprocessus (IPC) permet la communication entre plusieurs processus Python en cours d'exécution. Explorer diverses options, telles que l’utilisation de canaux nommés, de services dbus et de sockets, peut s’avérer difficile. Cet article présente une solution robuste et de niveau supérieur utilisant la bibliothèque multitraitement.

Utilisation de la bibliothèque multitraitement

La bibliothèque multitraitement offre un moyen pratique et efficace d'implémenter IPC en Python. Il fournit des auditeurs et des clients qui encapsulent des sockets et vous permettent d'échanger directement des objets Python.

Écoute des messages

Pour créer un processus d'écoute, utilisez la classe Listener :

<code class="python">from multiprocessing.connection import Listener

address = ('localhost', 6000)
listener = Listener(address, authkey=b'secret password')
conn = listener.accept()
print('connection accepted from', listener.last_accepted)</code>
Copier après la connexion

L'écouteur attend sur une adresse IP et un port spécifiés les connexions entrantes. Une fois la connexion établie, un objet Connection (conn) est renvoyé.

Envoi de messages

Pour envoyer des messages sous forme d'objets Python, utilisez la classe Client :

<code class="python">from multiprocessing.connection import Client

address = ('localhost', 6000)
conn = Client(address, authkey=b'secret password')
conn.send('close')
conn.close()</code>
Copier après la connexion

La classe Client se connecte à l'adresse spécifiée et peut envoyer des objets arbitraires au processus d'écoute.

Exemple Implémentation

Considérons un cas d'utilisation simple où un processus (listener.py) écoute les messages et l'autre (client.py) envoie un message.

listener.py :

<code class="python">from multiprocessing.connection import Listener

listener = Listener(('localhost', 6000), authkey=b'secret password')
conn = listener.accept()

message = conn.recv()
if message == 'close':
    conn.close()
    listener.close()
    exit(0)
else:
    conn.close()
    listener.close()
    exit(1)</code>
Copier après la connexion

client.py :

<code class="python">from multiprocessing.connection import Client

conn = Client(('localhost', 6000), authkey=b'secret password')
conn.send('close')
conn.close()</code>
Copier après la connexion

Lorsque vous exécutez l'écouteur .py puis client.py, le processus d'écoute recevra le message et quittera avec le code retour 0, indiquant le succès. Si un message non valide est envoyé, l'écouteur se terminera avec un code retour différent de zéro, indiquant un échec.

Cet exemple démontre la facilité et la flexibilité de l'utilisation de la bibliothèque multitraitement pour la communication interprocessus en Python. Il fournit une abstraction de niveau supérieur sur les sockets, vous permettant d'envoyer et de recevoir de manière transparente des objets Python entre les processus.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal