「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python プロセス間でロックを共有する方法

Python プロセス間でロックを共有する方法

2024 年 11 月 8 日に公開
ブラウズ:268

How to Share Locks Between Python Processes

Python プロセス間でロックを共有する

複数のプロセス間でロックを使用しようとすると、「ロック オブジェクトは継承を通じてプロセス間で共有されます。」

これを解決するには、主に 2 つの方法があります。アプローチ:

Manager の使用

このアプローチには、Manager オブジェクトを作成し、マルチプロセッシング インポート マネージャーから Manager.Lock():

from multiprocessing import Manager
...
m = Manager()
l = m.Lock()

ただし、Manager を使用すると、Manager サーバーをホストし、IPC 経由で通信するための追加プロセスが必要になります。

プールでのロックの受け渡しCreation

別の方法は、プールの作成時に初期化キーワードを使用して通常の multiprocessing.Lock() を渡すことです。引数:

def init(l):
    global lock
    lock = l

l = multiprocessing.Lock()
pool = multiprocessing.Pool(initializer=init, initargs=(l,))

このメソッドは、ロック インスタンスをすべての子ワーカーでグローバルにします。このアプローチでは、部分関数が必要なくなることに注意してください。

これらの手法のいずれかを採用すると、Python プロセス間でロックを効果的に共有でき、共有リソースへの調整されたアクセスが可能になります。

リリースステートメント この記事は次の場所に転載されています: 1729132333 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3