進程間通訊 (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 類別連接到指定的位址,並且可以向偵聽進程發送任意物件。
考慮一個簡單的用例,其中一個程序 (listener.py) 偵聽訊息,並且other (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>
以上是Python 的多處理函式庫如何簡化進程間通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!