2012-07-02 44 views
2

背景: 我有一個當前實現,它接收來自Python中約120個不同套接字連接的數據。在我目前的實現中,我使用專用線程處理每個獨立套接字連接。這些線程中的每一個都解析數據並最終將其存儲在共享的鎖定字典中。這些套接字沒有統一的數據速率,有些套接字比其他套接字獲得更多的數據。在Python中處理來自多個套接字的傳入數據

問題: 這是在python中處理傳入數據的最佳方式,還是python有更好的方法來處理每個線程的多個套接字?

回答

3

使用異步方法會讓你更快樂。作爲熟知的應用Tornado的完整實現的例子是完美的。您也可以輕鬆將Tornado的ioloop用於Web服務器以外的其他應用。

有替代庫,如gevent;但我相信Tornado首先是一個更好的地方,因爲它提供了循環和在其之上實現的Web服務器,作爲如何很好地使用循環的一個很好的例子。

2

如果您使用的是線程,那基本上就是這樣。

另一種方法是使用其中的各種異步網絡庫,例如Twisted,TornadoGEvent

1

如您在Asynchronous UDP Socket Reading中提到的問題,asyncoro可用於高效處理多個異步套接字。異步在您的問題中的另一個好處是,您不必擔心鎖定共享字典,與asyncoro一樣,最多隻有一個協程正在執行,並且沒有強制佔先。

相關問題