その問題に対する答えを数時間探していましたが、解決できなかったので、この質問をここに投稿する必要があります。それは些細なことだと確信しています。
私が取り組んでいるプロジェクトには多くのクラスとスレッドがあり、それに小さなクラスを追加しています。これらのクラスは、プロジェクトのエンジンを使用して異なるスレッドで実行されますが、クラス間で同期する必要があります。つまり、クラス A はクラス B にメッセージを送信できる必要があります。それらは異なるモジュールにもあります。
EDIT2:この質問の新しい説明があります:一番下を見てください。
私はPythonの非常に初心者であり、キューオブジェクト(Queue.Queue())を共有し、その内容を無限ループで調べることでこれを解決しようとしました。このオブジェクトとメソッドgetおよびputを使用して非常に単純なモジュールを作成しました。
メッセンジャーモジュール:
import Queue
MessageQueue = Queue.Queue()
def GetMessage():
return MessageQueue.get()
def PutMessage(message):
MessageQueue.put(message)
return
2つの異なるクラス(インポートメッセンジャー)で使用しますが、グローバル変数ではないため、「MessageQueue」オブジェクトには異なるクラスで異なるインスタンスがあると想定しています。これらのクラスは異なるキューで動作しているように見えるためです。
そのようなオブジェクト間で 2 つのクラスを同期する方法 (このキューをグローバルにする代わりに、より良い方法があるかもしれません)。
EDIT1 - ここにクラスがあります:
クラスA:
from utils import messenger as m
class Foo():
[...]
def foo():
[...]
m.put(message)
クラス B:
from utils import messenger
class Bar():
[...]
def bar():
[...]
while True:
print(str(m.get()))
EDIT2:私は自分の問題をもう少しよく理解しているので、ここに更新があります:
両方のクラスは、異なるプロセスで別個のプログラムとして実行されます (グローバル変数を共有していない理由を説明できるかもしれません:))。
問題は残ります: 2 つの異なるプログラム間でどのように同期するのですか? 私が考える唯一の解決策は、ディスク上にファイルを作成し、プロセス間でそれを読み取ることですが、非常に信頼性が低く (ロックなど)、遅いようです。
別のアプローチを提案できますか?