ホームページ > バックエンド開発 > Python チュートリアル > Python の複数のプロセス間で辞書を共有および変更するにはどうすればよいですか?

Python の複数のプロセス間で辞書を共有および変更するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-14 17:44:02
オリジナル
772 人が閲覧しました

How to Share and Modify a Dictionary Between Multiple Processes in Python?

マルチプロセス: プロセス間辞書共有

複数のプロセスが共有キュー Q 上で動作し、グローバル ディクショナリを操作するシナリオを考えてみましょう。 、D. 驚くべきことに、Q に参加した後に D にアクセスすると、子プロセスでの変更が観察されたにもかかわらず、空の辞書が表示されます。

この動作は、同期の問題に起因します。各プロセスは独自のメモリ空間で動作し、子プロセス内で D に加えられた変更はメイン プロセスに自動的には反映されません。これに対処するには、同期対策が必要です。

解決策: Manager オブジェクトを使用する

Python 標準ライブラリは、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() メソッドは、すべてのプロセスからアクセスできる共有辞書 d を作成します。子プロセス内で d に加えられた変更は、Manager オブジェクトによって管理される共有メモリを通じてメイン プロセスに伝播されます。

出力:

$ python mul.py
{1: '111', '2': 6}
ログイン後にコピー

以上がPython の複数のプロセス間で辞書を共有および変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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