我一直在尋找解決這個問題幾個小時的答案,但無法解決它,所以我必須在這裏發佈這個問題,我相信這是微不足道的。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