命名管道提供了一种强大的进程间通信(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中文网其他相关文章!