ホームページ  >  記事  >  バックエンド開発  >  Python でプロセス間通信を簡単に実装するにはどうすればよいですか?

Python でプロセス間通信を簡単に実装するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 21:04:30697ブラウズ

How Can I Easily Implement Interprocess Communication in Python?

Python のプロセス間通信

複数の Python ランタイムを使用する場合、効果的なプロセス間通信を確立する必要があります。次のようなさまざまなメソッドが存在します。

  • 名前付きパイプ (os.mkfifo): 基本的なオプションではありますが、洗練されておらず、エラーが発生しやすい場合があります。
  • DBus サービス: デスクトップ環境に適していますが、ヘッドレス システムには非常に複雑です。
  • ソケット: 低レベルで手動集中型です。

包括的なソリューション

特定の要件に対処するには、マルチプロセッシング ライブラリを検討してください。ソケット通信をシームレスに処理し、任意の Python オブジェクトの送信を可能にするリスナーとクライアントを提供します。

サーバーの実装

サーバーは、受信メッセージをリッスンするように構成できます。

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

クライアントの実装

クライアントは通信を開始し、コマンドを 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>

以上がPython でプロセス間通信を簡単に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。