ホームページ >バックエンド開発 >Python チュートリアル >Python のマルチプロセッシング ライブラリはどのようにプロセス間通信を簡素化できるのでしょうか?
プロセス間通信 (IPC) により、実行中の複数の Python プロセス間の通信が可能になります。名前付きパイプ、dbus サービス、ソケットの使用など、さまざまなオプションを検討するのは困難な場合があります。この記事では、マルチプロセッシング ライブラリを使用した、より高度で堅牢なソリューションを紹介します。
マルチプロセッシング ライブラリは、Python で IPC を実装する便利で効率的な方法を提供します。ソケットをカプセル化して Python オブジェクトを直接交換できるリスナーとクライアントが提供されます。
リスニング プロセスを作成するには、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>
リスナーは、指定された IP アドレスとポートで受信接続を待機します。接続が確立されると、Connection オブジェクト (conn) が返されます。
メッセージを Python オブジェクトとして送信するには、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>
Client クラスは指定されたアドレスに接続し、任意のオブジェクトをリッスン プロセスに送信できます。
1 つのプロセス (listener.py) がメッセージをリッスンし、他の (client.py) がメッセージを送信します。
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>
client.py:
<code class="python">from multiprocessing.connection import Client conn = Client(('localhost', 6000), authkey=b'secret password') conn.send('close') conn.close()</code>
listener.py を実行してから client.py を実行すると、リスナー プロセスはメッセージを受信し、成功を示す戻りコード 0 で終了します。無効なメッセージが送信された場合、リスナーは失敗を示すゼロ以外の戻りコードで終了します。
この例では、Python でのプロセス間通信にマルチプロセッシング ライブラリを使用する簡単さと柔軟性を示します。これはソケットに対する高レベルの抽象化を提供し、プロセス間で Python オブジェクトをシームレスに送受信できるようにします。
以上がPython のマルチプロセッシング ライブラリはどのようにプロセス間通信を簡素化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。