2009-01-23 51 views
2

在Python中,如果我希望我的服務器能夠很好地按比例縮放,我顯然需要產生多個進程。我想知道哪個更好(使用Twisted):Python/Twisted多用戶服務器 - 哪種更高效?

A)管理進程(持有實際套接字連接的進程)將收到的數據包放入一個共享隊列(多處理模塊中的一個)數據包退出隊列,處理它們並將結果發送回客戶端。 B)管理進程(持有實際套接字連接的人)啓動一個延遲線程,然後在進程池上調用apply()函數。一旦結果從工作進程返回,管理器將結果發送回客戶端。

在這兩種實現中,工作進程都使用線程池,因此它們可以一次處理多個數據包(因爲會有很多數據庫查詢)。

回答

2

我認爲B是有問題的。線程只能在一個CPU上運行,即使它運行一個進程,線程仍在運行。 A可能會更好。

最好嘗試和衡量兩者的時間,並看看哪一個更快,哪個比例好。但是,我會重申,我非常懷疑B會很好地擴展。

1

我認爲「A」是你想要的答案,但你不必親自去做。

你考慮過嗎ampoule