ホームページ > バックエンド開発 > Python チュートリアル > Python でプロセス間で共有データへのアクセスを同期するにはどうすればよいですか?

Python でプロセス間で共有データへのアクセスを同期するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-27 15:06:15
オリジナル
734 人が閲覧しました

How to Synchronize Access to Shared Data Across Processes in Python?

プロセス間での共有データへのアクセスの同期: マルチプロセッシング ソリューション

複数のプロセスがグローバル ディクショナリを同時に操作するシナリオでは、同期が重要になります一貫した結果を保証します。この問題は、共有辞書 D にアクセスして変更する際に、複数のプロセスがキュー上で共同作業する必要があるプログラムで発生しました。

変更が表示される子プロセスで辞書を検査すると、不一致が発生します。ただし、メイン プロセスのキューに参加すると、ディクショナリは空になり、同期/ロックの問題を示します。

問題の理解

同期の課題は、次の事実から生じます。異なるプロセスが同じ辞書に対して同時に動作します。適切に同期しないと、各プロセスによる変更がすべてのプロセスに一貫して反映されず、データの破損または不整合が発生する可能性があります。

解決策: Manager オブジェクトの使用

A堅牢なソリューションには、マルチプロセッシング ライブラリの Manager オブジェクトを使用することが含まれます。このオブジェクトは、複数のプロセスによって同時にアクセスおよび変更できる共有データ構造を作成および管理するメカニズムを提供します。

コード スニペットは、このアプローチを効果的に実装する方法を示しています。

from multiprocessing import Process, Manager

def f(d):
    d[1] += '1'
    d['2'] += 2

if __name__ == '__main__':
    manager = Manager()

    d = manager.dict()
    d[1] = '1'
    d['2'] = 2

    p1 = Process(target=f, args=(d,))
    p2 = Process(target=f, args=(d,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()

    print(d)
ログイン後にコピー

この例では、manager.dict() メソッドは、複数のプロセスからアクセスおよび変更できる共有辞書を作成します。これらのプロセスは同時に辞書を変更し、その後出力されて、更新された値が表示されます。

このアプローチにより、共有辞書へのアクセスが効果的に同期され、すべてのプロセスでデータ変更の一貫したビューが確保されます。

以上がPython でプロセス間で共有データへのアクセスを同期するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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