私はPythonで計算量の多いプログラムを実行しています。私のシステムでは約10分かかります。 CPU使用率を見ると、8つのコアのうちの1つが約70%、2つ目が約20%、残りが0%に近い状態になっています。プログラムを100%使用する方法はありますかシングルコア?PythonでのCPU使用率とスレッディングの制御
編集:私は、8つのコアすべてを活用することは素晴らしい選択肢ではないことを認識していますが、コアを100%使用する方法はありますか?
私はPythonで計算量の多いプログラムを実行しています。私のシステムでは約10分かかります。 CPU使用率を見ると、8つのコアのうちの1つが約70%、2つ目が約20%、残りが0%に近い状態になっています。プログラムを100%使用する方法はありますかシングルコア?PythonでのCPU使用率とスレッディングの制御
編集:私は、8つのコアすべてを活用することは素晴らしい選択肢ではないことを認識していますが、コアを100%使用する方法はありますか?
Pythonは実際にはマルチスレッド化されていません。論理プロセスを管理する便利な方法としてスレッドを作成できますが、アプリケーション自体にはglobal thread lockがあります。このため、1つのスレッドしか利用できません。
さまざまな風味のPythonを使用することができますが、それは他の問題をもたらす可能性があります。別のプロセスに分解したい場合は、subprocessモジュールを利用できます。これにより、2つの異なるPythonプロセスが作成されますが、それらは独立して動作することができます。残念ながら、コミュニケーションの方法をコーディングする必要があります。
マルチコアアプリケーションでは、threading
の代わりにmultiprocessing
モジュールを使用する必要があります。 Pythonには、スレッドに関するいくつかの(よく文書化された)パフォーマンス上の問題があります。 Pythonとスレッドのパフォーマンスの詳細については、Global Interpreter Lockのgoogleを検索してください。
Pythonはシングルスレッドです。 –
もしそれがPythonに特有のものでなければ、あなたが言及していないあなたのオペレーティングシステム用です。 –
この質問にはあなたに興味がある回答があります:http://stackoverflow.com/questions/20939299/does-python-support-multithreading-can-it-speed-up-execution-time –