web-dev-qa-db-ja.com

Python 12%CPUパワーのみを使用するインタープリター

テキスト分析にubuntuでpythonを使用しています。システムモニターに表示されるように、プログラムはCPUの使用量を大量に処理していますが、常に12%のままです。

プログラムの優先度をNormalからVery Highに変更しましたが、効果はありませんでした。

私のpythonプログラムが取得できるCPU使用量を制限しているのは何ですか?それをどのように変更すれば、プログラムはより多くのCPUパワーを利用できますか?

26

8つの仮想コア(おそらくハイパースレッディングを備えたクアッドコア)を備えたCPUがあると思いますか?つまり、完全にロードされた1つのCPUスレッド/仮想コアは、合計ロードの12.5%に相当します。

Pythonインタープリターは、デフォルトでは1つのプロセスとしてのみ実行されるアプリケーションであるため、複数の仮想コアを利用することはできません。一緒に実行するコードがマルチスレッドを使用している場合でも、 GIL(グローバルインタープリターロック) のため、CPUスレッド/仮想コアは1つしか使用しません。

Pythonプログラムが multiprocessing を使用している場合にのみ、実際にPythonインタープリターの複数のインスタンスを起動し、タスクを完全に並行して実行できます。複数の仮想コア/ CPUスレッドの利点。 (@SargeBorschが彼のコメントで指摘したように、マルチプロセッシングなしでこれを達成するいくつかの高度な方法もありますが、それは通常、自分ですぐに書くものではありません。)

73
Byte Commander

別の可能性は、この場合はあまりありませんが、プログラムがディスクにバインドされている、つまり、ディスクへの読み書きが遅く、CPUがディスクを待機している可能性があります。

18
jmmcd