Python / Twistedマルチユーザーサーバー-より効率的なものは何ですか?

StackOverflow https://stackoverflow.com/questions/471660

  •  19-08-2019
  •  | 
  •  

質問

Pythonで、サーバーのCPUを適切に拡張したい場合、明らかに複数のプロセスを生成する必要があります。 (Twistedを使用して)どちらが優れているのかと思いました:

A)マネージャープロセス(実際のソケット接続を保持するプロセス)は、受信したパケットを共有キュー(マルチプロセッシングモジュールからのパケット)に入れ、ワーカープロセスはパケットをキューから取り出して処理し、送信します結果をクライアントに返します。

B)マネージャープロセス(実際のソケット接続を保持するプロセス)は、遅延スレッドを起動し、プロセスプールでapply()関数を呼び出します。ワーカープロセスから結果が返されると、マネージャーは結果をクライアントに送り返します。

どちらの実装でも、ワーカープロセスはスレッドプールを使用するため、一度に複数のパケットを処理できます(多くのデータベースクエリがあるため)。

役に立ちましたか?

解決

Bには問題があると思います。スレッドは1つのCPUでのみ実行され、プロセスを実行しても、スレッドは引き続き実行されます。より良いかもしれません。

時間の観点から両方を試して測定し、どちらが高速で、どちらが適切にスケーリングするかを確認するのが最善です。ただし、Bが適切にスケーリングされることは非常に疑わしいことを繰り返します。

他のヒント

<!> quot; A <!> quot;あなたが望む答えですが、あなたは自分でそれをする必要はありません。

アンプルを検討しましたか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top