2013-01-20 107 views
1

我正在製作一個線程聊天服務器,我需要一種方式向所有客戶端發送消息。我可以使用全局隊列,但是隻有一個處理客戶端的線程能夠發送消息。所以我想知道是否可以在每個客戶端線程中創建一個單獨的隊列對象,並將它們附加到列表中,以便我能夠將消息發送到每個客戶端的隊列。這可能嗎?Python - 線程 - 我可以創建線程隊列列表嗎?

clientqueues = [] #Global list of client queues 

class ClientThread(threading.Thread): 
    def __init__(self): 
     myqueue = Queue.Queue() #Client queue 
     clientqueues.append(myqueue) 
     ... 
def MessageAllClients(message): 
    global clientqueues 
    for queue in clientqueues: 
     queue.put(message) 

這個工作還是我要做的這個錯誤的方式?

回答

3

你的方法很好。我唯一會改變的是clientqueues a static memberClientThread而不是全局變量。

+0

那麼這是一個好消息,我並沒有想到瘋狂。謝謝你的快速反應! –

0

一個隊列只是一個對象(就像Python中的所有東西),所以沒有問題列出它們。