python のマルチプロセスでデータを共有の方法

Pythonでは、マルチプロセッシングモジュールを使ってマルチプロセス間でデータを共有できます。以下に例を示します。

from multiprocessing import Process, Value, Array

def func1(n):
    # 更新共享变量的值
    n.value = 10

def func2(a):
    # 更新共享数组的值
    for i in range(len(a)):
        a[i] = i

if __name__ == '__main__':
    # 创建共享变量和数组
    num = Value('i', 0)
    arr = Array('i', range(5))

    # 创建进程并传递共享变量和数组
    p1 = Process(target=func1, args=(num,))
    p2 = Process(target=func2, args=(arr,))

    # 启动进程
    p1.start()
    p2.start()

    # 等待进程结束
    p1.join()
    p2.join()

    # 打印共享变量和数组的值
    print(num.value)
    print(arr[:])

上記の例では、まず Value と Array 関数で共有変数 num と共有配列 arr を作成しました。そして、2つのプロセス p1 と p2 を作成し、共有変数と配列をパラメータとして2つのプロセスに渡しました。プロセス p1 が共有変数の値の更新を担当し、プロセス p2は共有配列の値の更新を担当します。最後に、start() メソッドでプロセスを開始し、join() メソッドでプロセスが終了するのを待ちます。そして、最後に、共有変数と配列の値にアクセスすることで、最終的な結果を得ることができます。

共有データを使用する場合は、競合状態や同期問題が発生する可能性があるため、Lock や Semaphore などの適切な同期手段を使用して、データの整合性と正確性を保証する必要があります。

bannerAds