ホームページ > バックエンド開発 > C++ > 名前付きパイプは Python と C# でのプロセス間通信をどのように促進できるのでしょうか?

名前付きパイプは Python と C# でのプロセス間通信をどのように促進できるのでしょうか?

Linda Hamilton
リリース: 2025-01-14 12:46:15
オリジナル
725 人が閲覧しました

How Can Named Pipes Facilitate Interprocess Communication in Python and C#?

名前付きパイプを使用した単純な IPC テスト アプリケーション

名前付きパイプは、プロセス間通信 (IPC) のための堅牢な方法を提供し、異なるプログラム間での効率的なデータ交換を可能にします。 この例では、1 つのプロセスがメッセージを送信し、応答を受信する基本的なテスト アプリケーションを示します。

Python の実装

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# の実装

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート