Maison  >  Article  >  développement back-end  >  Comment puis-je facilement implémenter la communication interprocessus en Python ?

Comment puis-je facilement implémenter la communication interprocessus en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 21:04:30697parcourir

How Can I Easily Implement Interprocess Communication in Python?

Communication interprocessus en Python

Lorsque vous travaillez avec plusieurs environnements d'exécution Python, il devient nécessaire d'établir une communication interprocessus efficace. Diverses méthodes existent, notamment :

  • Named Pipes (os.mkfifo) : Bien qu'il s'agisse d'une option de base, elle peut sembler non raffinée et sujette à des erreurs.
  • Services DBus :Convient aux environnements de bureau, mais trop complexe pour les systèmes sans tête.
  • Sockets : De bas niveau et manuel intensif.

Une solution complète

Pour répondre à vos besoins spécifiques, pensez à la bibliothèque multitraitement. Il fournit des écouteurs et des clients qui gèrent de manière transparente la communication par socket et permettent la transmission d'objets Python arbitraires.

Implémentation du serveur

Le serveur peut être configuré pour écouter les messages entrants :

<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)
while True:
    msg = conn.recv()
    # Process the received message here
    if msg == 'close':
        conn.close()
        break
listener.close()</code>

Implémentation du client

Le client peut initier la communication et envoyer des commandes sous forme d'objets Python :

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

address = ('localhost', 6000)
conn = Client(address, authkey=b'secret password')
conn.send('close')
# Send arbitrary objects:
# conn.send(['a', 2.5, None, int, sum])
conn.close()</code>

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:
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