標準のクライアントサーバーモデルでpyhtonのマルチプロセッシングパッケージを使用しています。サーバーには、メソッドを介して登録し、クライアントからプロキシを介して(クラスに基づいて)使用
するいくつかのタイプのオブジェクトがあります。BaseManager.register
AutoProxy
複数のクライアントスレッドからこれらのプロキシを使用しているときにランダムエラーがポップアップしました。いくつか読んだ後、プロキシインスタンス自体がスレッドセーフではないことがわかりました。Pythonマルチプロセッシングドキュメントから参照してください:
プロキシのスレッドセーフ
ロックで保護しない限り、複数のスレッドのプロキシオブジェクトを使用しないでください。(同じプロキシを使用する異なるプロセスで問題が発生することはありません。)
私のシナリオはこれに完全に適合します。OK、なぜ失敗するのか知っています。しかし、私はそれが機能することを望んでいます:)それで私はアドバイスを求めます-これをスレッドセーフにするための最良の方法は何ですか?
私の特定のケースは、(a)90%の時間、単一のクライアントスレッドで作業し、(b)プロキシの背後にある実際のオブジェクトはスレッドセーフであり、(c)同じプロキシの複数のメソッドを呼び出したい場合です。 -同時にオブジェクト。
いつものように、インターネット、私を助けてくれる人は生き続け、決して死ぬことはありません!頑張っている人も慰め賞をもらえるかもしれません。
ありがとう、
ヨナタン