問題の仕様:
私はPythonでいくつかの複雑なタスクを実行していますが、それを高速化するために、pythonsマルチプロセッシングライブラリを使用することにしました。それはかなりうまくいきましたが、しばらくして、私はロックがどれくらいの時間、私が使用し、消費し、プロセスがお互いをブロックしているのか疑問に思い始めました。
プロセスの構造は次のとおりです。
プロセス間の共有リストを更新する1つのプロセス。データ更新のコードは次のようなものです。
lock.acquire()
list_rex[0] = pat.some_list
list_rex[1] = pat.some_dictionary
lock.release()
ここで、list_rexとlockはによって定義されます
list_rex = manager.list([[some_elements], {some_elements}])
lock = multi.Lock()
そして、いくつかのプロセスがあり、それらは時々、これらのリストで自分のメモリスペースを更新します。コードは次のとおりです。
lock.acquire()
some_list = list_rex[0]
some_dict = list_rex[1]
lock.release()
some_listとsome_dictは何らかの形で関連しているため、プロセスがsome_dictとは異なる更新からsome_listに情報を持つことを許可できません。
そして私の質問は、メソッドacquire()とrelease()はどれくらい速いのかということです。私の場合、数秒、場合によっては数ミリ秒以内に呼び出すことができます。および/または私の場合、ロックの使用を回避する方法はありますか?
お時間をいただきありがとうございます。
編集:あなたのコメントを検討した後、私の質問はおそらくあるはずです-プロキシリストは私の計算にどのように影響しますか?私は「some_list」と「some_dict」を更新後に読むために本当にたくさん使用します。