3

現在、Python を使用してI/O 集中型の負荷テストを行っています。私のプログラムが行うことは、ターゲット サーバーに HTTP 要求をできるだけ速く送信することだけです。

これを管理するために、私は基本的に I/O とリモート サーバーの制限に縛られているため、最大 20のスレッドを使用します。

'top' によると、CPythonはデュアル コア コンピューターで 130% の CPUを使用しています。

そんなことがあるものか ?GILがこれを防いだと思いましたか?それとも、Linux が各アプリケーションによって消費されるリソースを「カウント」する方法ですか?

4

3 に答える 3

15

上部の 100% は、シングル コアを指します。デュアルコア マシンでは、最大 200% 使用できます。

1 つのシングル スレッド プロセスは 1 つのコアしか使用できないため、100% に制限されます。プロセスには複数のスレッドがあるため、両方のコアを使用することを妨げるものは何もありません。

GIL は、純粋な Python コードが同時に実行されるのを防ぐだけです。多くのライブラリ呼び出し (ほとんどの I/O を含む) は GIL を解放するので、ここでも問題ありません。インターネット上の FUD の多くとは対照的に、GIL が実際のパフォーマンスを低下させることはめったにありません。

于 2012-07-23T15:20:03.737 に答える
1

これは、使用されている C 拡張ライブラリ呼び出しが GIL を解放し、バックグラウンドでさらに処理を行う場合に可能です。

于 2012-07-23T15:24:15.037 に答える
0

これがいらいらする場合は、設定 (具体的には、システム モニターまたは同等のツールの設定) を設定して「Solaris モード」を有効にします。これは、シングル コアの処理能力の割合ではなく、合計処理能力の割合として CPU% を計算します。 .

于 2012-07-23T17:04:40.373 に答える