我一直在寻找解决这个问题几个小时的答案,但无法解决它,所以我必须在这里发布这个问题,我相信这是微不足道的。Python:在进程之间共享消息
我与之合作的项目有很多类和线程,我正在为它添加小类。这些类在不同的线程中使用项目引擎执行,但我需要它们在它们自己之间进行同步 - 即类A应该能够向类B发送消息。它们也位于不同的模块中。
EDIT2:这个问题有一个新的解释:看底部。
我在蟒蛇真的很初学者,我试图通过共享队列对象(Queue.Queue()),并检查它在无限循环的内容,以解决这个问题,我做了很简单的模块,这个对象和方法获取和放置:
信使模块:
import Queue
MessageQueue = Queue.Queue()
def GetMessage():
return MessageQueue.get()
def PutMessage(message):
MessageQueue.put(message)
return
,并用它在两个不同的类(进口信使),但因为它不是全局变量,我认为“的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:既然我现在明白我的问题好一点,在这里是更新:
这两个类在不同的进程中作为不同的程序运行(可以解释为什么不共享全局变量:))。
所以问题依然存在:如何在两个不同的程序之间进行同步?我想到的唯一解决方案是在光盘上制作一个文件并在两个进程之间读取它,但它看起来非常不可靠(锁等)并且速度很慢。
你能不能告诉我不同的方法?
你做了一个实际的课程还是一个模块? – Blender
您在这里没有向我们展示任何课程;你刚刚得到了一个全局变量和两个全局函数。所以,这不是你所问的代码,或者你并不是说大多数人所做的“全局变量”就是这个意思。 – abarnert
@Blender:是的,我只做了一个模块 - 我更正了问题(这不是第三课,它只是一个模块) – msu