命名管道提供了一種強大的進程間通訊(IPC)方法,可以在不同程式之間實現高效的資料交換。 此範例演示了一個基本的測試應用程序,其中一個進程發送訊息並接收回應。
Python 程式碼使用 multiprocessing
模組建立發送方和接收方進程。
寄件者流程:
<code class="language-python">import multiprocessing def sender(): pipe_in, pipe_out = multiprocessing.Pipe() p = multiprocessing.Process(target=receiver, args=(pipe_in,)) p.start() pipe_out.send("Hello from Python") p.join() </code>
接收進程:
<code class="language-python">def receiver(pipe_in): message = pipe_in.recv() print(message) # Output: Hello from Python pipe_in.send("Acknowledged from Python")</code>
C# 程式碼利用命名管道客戶端和伺服器流來實現 IPC 機制。
<code class="language-csharp">using System; using System.IO; using System.IO.Pipes; using System.Threading.Tasks; class Program { static void Main() { StartServer(); Task.Delay(1000).Wait(); // Allow server to start // Client using (var client = new NamedPipeClientStream("PipesOfPeace")) { client.Connect(); using (StreamWriter writer = new StreamWriter(client)) { writer.WriteLine("Hello from C#"); writer.Flush(); } using (StreamReader reader = new StreamReader(client)) { string response = reader.ReadLine(); // Reads "Acknowledged from C#" Console.WriteLine(response); } } } static void StartServer() { Task.Factory.StartNew(() => { using (var server = new NamedPipeServerStream("PipesOfPeace")) { server.WaitForConnection(); using (StreamReader reader = new StreamReader(server)) { string message = reader.ReadLine(); // Reads "Hello from C#" Console.WriteLine(message); } using (StreamWriter writer = new StreamWriter(server)) { writer.WriteLine("Acknowledged from C#"); writer.Flush(); } } }); } }</code>
兩個範例都示範了使用命名管道進行進程間通訊的基本原理。 發送、接收訊息並發迴回應,展示了一個簡單而有效的 IPC 解決方案。
以上是命名管道如何促進 Python 和 C# 中的進程間通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!