Python 無限ループ CPU
無限ループはCPUを使い切る最も速い方法の一つです。技術的に終了するループでも、回転が速すぎると無限ループのように振る舞うことがあります。
Common symptoms
- Pythonプロセスが瞬時にCPUをスパイクさせる
- 高いアクティビティにもかかわらず有用な進捗がない
- 再起動すると一時的に問題が解消される
Likely causes
- break条件の欠如
- sleepなしのポーリングループ
- バックオフなしのリトライループ
Evidence to look for
同じプロセスが出力の進捗なしに高負荷のままになる
関数サンプルが同じスタックパターンを繰り返す
外部トラフィックが少なくてもCPUが高いままになる
What it usually means
システムは「ビジー」に見えますが、プロセスは同じ無駄な処理を繰り返していることが多いです。
What to do next
- 1sleep、バックオフ、または終了条件を追加する
- 2ループの進捗と反復回数をログに記録する
- 3プロファイリングを使用してスピンが発生している箇所を特定する
See what's causing your CPU
cpum.ai turns CPU, process, disk, and memory signals into plain-English explanations with evidence.
Open cpum.ai