遠程程序呼叫(Remote Procedure Call,RPC):
被設計成一種使用在以網路連接之系統間的程序呼叫方法。相較於 IPC 訊息,RPC 通信所交換的訊息有良好的架構,因此不再只是封包形式的資料。這些訊息被送往一個 RPC 守護程式(此 RPC 守護程式正在傾聽遠方系統的一個 port),訊息中包含被執行函數的識別符號和傳遞給該函數的參數。然後,這個函數會根據要求被執行,而任何輸出會以另一個獨立訊息送回給要求者。
RPC 的執行如下
請 AI 幫我生成一個使用 XML-RPC 在不同行程間通信的例子
server.py
from xmlrpc.server import SimpleXMLRPCServer
import multiprocessing
def add(x, y):
return x + y
def run_server():
server = SimpleXMLRPCServer(("localhost", 8000))
server.register_function(add, "add")
print("RPC 服務器正在運行...")
server.serve_forever()
if __name__ == "__main__":
# 使用多進程來啟動服務器
server_process = multiprocessing.Process(target=run_server)
server_process.start()
client.py
import xmlrpc.client
def run_client():
with xmlrpc.client.ServerProxy("http://localhost:8000/") as proxy:
result = proxy.add(5, 4)
print(f"5 + 4 = {result}")
if __name__ == "__main__":
run_client()
結果