ホームページ >バックエンド開発 >Python チュートリアル >Python 3.x でプロセス間通信にマルチプロセッシング モジュールを使用する方法

Python 3.x でプロセス間通信にマルチプロセッシング モジュールを使用する方法

WBOY
WBOYオリジナル
2023-08-01 12:39:241392ブラウズ

Python 3 でプロセス間通信にマルチプロセッシング モジュールを使用する方法。x

コンピュータ テクノロジの発展に伴い、プログラミングで複数のタスクを同時に実行する必要があることがよくあります。マルチコア プロセッサをより有効に活用するために、Python のマルチプロセッシング モジュールは、同時実行プログラムを作成するためのシンプルかつ強力なツール セットを提供します。マルチプロセッシング モジュールを使用すると、Python で複数のプロセスを使用できるようになり、同時に実行し、必要に応じて通信できます。この記事では、プロセス間通信にマルチプロセッシング モジュールを使用する方法と、対応するコード例を紹介します。

  1. プロセス間通信に Queue を使用する
    マルチプロセッシング モジュールは、プロセス間でデータを受け渡すための Queue クラスを提供します。以下は、プロセス間通信に Queue を使用する例です。
from multiprocessing import Process, Queue

def worker(q):
    # 从队列中获取数据并处理
    while True:
        data = q.get()
        if data is None:
            break
        # 处理数据
        print("Worker got:", data)

if __name__ == '__main__':
    # 创建一个队列
    q = Queue()

    # 创建多个进程
    processes = []
    for i in range(3):
        p = Process(target=worker, args=(q,))
        processes.append(p)
        p.start()

    # 往队列中放入数据
    for i in range(10):
        q.put(i)

    # 添加结束标记到队列中
    for i in range(3):
        q.put(None)

    # 等待进程结束
    for p in processes:
        p.join()

上記のコードでは、Queue を通じてキューからデータを取得して処理するワーカー関数を作成します。次に、3 つのプロセスを作成し、各プロセスがワーカー関数を実行します。メインプロセスでは、キューにデータを入れ、終了マーカーを追加します。最後に、すべてのプロセスが終了するのを待ちます。

  1. プロセス間通信での Pipe の使用
    Queue の使用に加えて、マルチプロセッシング モジュールは、プロセス間の双方向パイプを作成するための Pipe クラスも提供します。以下は、プロセス間通信に Pipe を使用する例です。
from multiprocessing import Process, Pipe

def worker(conn):
    # 接收数据并打印
    data = conn.recv()
    print("Worker got:", data)

    # 发送数据回主进程
    conn.send("Hello from worker")

    # 关闭连接
    conn.close()

if __name__ == '__main__':
    # 创建一个管道
    parent_conn, child_conn = Pipe()

    # 创建子进程
    p = Process(target=worker, args=(child_conn,))
    p.start()

    # 发送数据到子进程
    parent_conn.send("Hello from main process")

    # 接收子进程的返回数据
    data = parent_conn.recv()
    print("Main process got:", data)

    # 等待子进程结束
    p.join()

上記のコードでは、メイン プロセスによって Pipe 経由で送信されたデータを受信し、それを出力するワーカー関数を作成します。次に、メッセージをメインプロセスに送り返します。メインプロセスでは、パイプを作成し、ポートの 1 つを子プロセスに渡します。次に、子プロセスにメッセージを送信し、子プロセスから戻りデータを受け取ります。最後に、子プロセスが終了するのを待ちます。

概要:
マルチプロセッシング モジュールをプロセス間通信に使用するのは非常に簡単で、プロセス間のデータ送信を実装するための Queue と Pipe という 2 つのクラスが提供されます。 Queue クラスは一方向通信に使用され、put メソッドと get メソッドを通じてプロセス間でデータを渡します。 Pipe クラスは、send メソッドと recv メソッドを介したプロセス間の双方向通信に使用されます。キューを使用するかパイプを使用するかに関係なく、異なるプロセス間でデータを簡単に転送して、タスクの同時実行とプロセス間通信を実現できます。

以上がPython 3.x でプロセス間通信にマルチプロセッシング モジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。