首頁 >後端開發 >Python教學 >Python 的多處理函式庫如何簡化進程間通訊?

Python 的多處理函式庫如何簡化進程間通訊?

DDD
DDD原創
2024-10-29 11:18:021022瀏覽

How can Python's multiprocessing library simplify Interprocess Communication?

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 類別連接到指定的位址,並且可以向​​偵聽進程發送任意物件。

範例實作

考慮一個簡單的用例,其中一個程序 (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 中使用多處理函式庫進行進程間通訊的簡便性和靈活性。它提供了對套接字的更高層次的抽象,讓您在進程之間無縫發送和接收 Python 物件。

以上是Python 的多處理函式庫如何簡化進程間通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn