テキスト解析のためにUbuntuでpythonを使用しています。システムモニターに示されているように、プログラムはCPU使用率が非常に高いにもかかわらず、常に12%のままです。
私はからプログラムの優先順位を変更Normal
するVery High
が、それは効果がなかったです。
私のPythonプログラムが取得できるCPU使用量を制限しているのは何ですか?それを変更するにはどうすればよいですか?プログラムはより多くのCPUパワーを利用できますか?
テキスト解析のためにUbuntuでpythonを使用しています。システムモニターに示されているように、プログラムはCPU使用率が非常に高いにもかかわらず、常に12%のままです。
私はからプログラムの優先順位を変更Normal
するVery High
が、それは効果がなかったです。
私のPythonプログラムが取得できるCPU使用量を制限しているのは何ですか?それを変更するにはどうすればよいですか?プログラムはより多くのCPUパワーを利用できますか?
回答:
8つの仮想コア(おそらくハイパースレッディングを備えたクアッドコア)を備えたCPUがあると思いますか?つまり、完全にロードされた1つのCPUスレッド/仮想コアは、合計ロードの12.5%に相当します。
Pythonインタープリターは、デフォルトでは1つのプロセスとしてのみ実行されるアプリケーションであるため、複数の仮想コアを利用することはできません。一緒に実行するコードがマルチスレッドを使用している場合でも、GIL(グローバルインタープリターロック)のため、CPUスレッド/仮想コアは1つしか使用しません。
Pythonプログラムがマルチプロセッシングを使用している場合にのみ、実際にPythonインタープリターの複数のインスタンスを起動し、タスクを完全に並列に実行できる場合にのみ、複数の仮想コア/ CPUスレッドを利用できます。(@SargeBorschが彼のコメントで指摘したように、マルチプロセッシングなしでこれを達成するためのいくつかの高度な方法もありますが、それは通常自分ですぐに書くものではありません。)
Jython
またはIronPython
GILを持ちません、。