我一直在寻找这个问题的答案几个小时,但无法解决,所以我必须在这里发布这个问题,我敢肯定它是微不足道的。
我使用的项目有很多类和线程,我正在向它添加小类。这些类使用项目的引擎在不同的线程中执行,但我需要它们在它们之间进行同步——即 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
并在两个不同的类(import messenger)中使用它,但由于它不是全局变量,我假设'MessageQueue'对象在不同的类中有不同的实例。因为这些类似乎在不同的队列上工作。
如何在两个类之间同步具有这样的对象(也许有一种更漂亮的方法,而不是让这个队列全局化)?
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:因为我现在更好地理解了我的问题,所以这里有一个更新:
这两个类在不同的进程中作为不同的程序运行(这可以解释为什么它们不共享全局变量:))。
所以问题依然存在:如何在两个不同的程序之间进行同步?我想到的唯一解决方案是在磁盘上制作一个文件并在进程之间读取它,但它似乎非常不可靠(锁定等)并且速度很慢。
你能建议我不同的方法吗?