2

Pythonでは、サーバーをCPU単位で適切に拡張したい場合は、明らかに複数のプロセスを生成する必要があります。私はどちらが良いのか疑問に思っていました(ツイストを使用):

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

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

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

4

2 に答える 2

2

Bが問題だと思います。スレッドは 1 つの CPU でのみ実行され、プロセスを実行してもスレッドは実行され続けます。Aの方がいいかもしれません。

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

于 2009-01-23T20:17:42.060 に答える
1

「A」はあなたが望む答えだと思いますが、自分でやる必要はありません。

アンプルを検討したことがありますか?

于 2009-02-01T11:20:45.683 に答える