Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの無限ループを安全に停止する方法【Ctrl-CとKeyboardInterruptの使い方】

無限ループとは何か?

無限ループ(Infinite Loop)とは、プログラムが自力では停止しないループのことです。Pythonでは、while文などの繰り返し条件が永遠に「真(True)」のまま変化しない場合に発生します。

例えば、次のようなコードは典型的な無限ループです。

while True:
    print("処理中...")

このコードは条件が常にTrueであるため、外部からの介入がない限り永久に実行され続けます。

Ctrl-Cで強制的に停止する方法

無限ループに陥ってしまった場合、最も基本的な対処法はキーボード割り込み(Keyboard Interrupt)を発生させることです。ターミナルやコマンドプロンプト上で、以下のキーを同時に押します。

  • Windows / Linux: Ctrl + C
  • macOS: Control + C

この操作を行うと、PythonはKeyboardInterruptという例外を発生させ、実行中のループを中断してプログラムを停止します。

KeyboardInterruptを適切に処理する

try-except構文を使えば、Ctrl-Cによる中断時にクリーンアップ処理を実行できます。ファイルの保存やリソースの解放などが必要な場合に便利です。

try:
    while True:
        print("処理中... (Ctrl+Cで終了)")
except KeyboardInterrupt:
    print("\nユーザーによって中断されました")
    # 終了前の後処理をここに記述

そもそも無限ループを防ぐには

意図しない無限ループを避けるためには、以下のポイントを意識しましょう。

  • 終了条件を明確にする: ループ変数が必ず更新されるようにする
  • break文を活用する: 特定の条件を満たしたらbreakで抜け出す
  • カウンタやタイムアウトを設定する: 最大反復回数を決めておく
count = 0
while count < 10:
    print(count)
    count += 1  # 変数の更新を忘れない

まとめ

無限ループは、繰り返し条件が永遠に真のままになることで発生します。停止させるにはCtrl-Cでキーボード割り込みを発生させるのが基本です。また、KeyboardInterrupt例外を捕捉すれば、安全に終了処理を行うことも可能です。日頃から終了条件を明確に設計することで、予期せぬ無限ループを未然に防ぎましょう。

  1. Tkinter GUIで無限ループを停止させるボタンを作成する方法

    Tkinterは、PythonでGUIアプリケーションを構築するための標準ライブラリです。ここでは、「特定の処理をループ内で繰り返し実行するアプリケーション」を例に、無限ループをボタン操作で安全に停止させる方法を解説します。 課題:無限ループする再帰関数 例として、Labelウィジェットにテキストを永続的に表示し続ける再帰的な関数を考えてみましょう。このままでは処理が止まらないため、ユーザーが任意のタイミングで停止できる仕組みが必要になります。 解決策としては、ボタンがクリックされたときに条件を切り替える関数を定義します。具体的には、True / False を切り替えられるグローバル変数を用

  2. PythonのforループでTkinterボタンを作成する方法

    TkinterのButtonウィジェットは、アプリケーションの実行中にイベントを処理し、さまざまなアクションを実行するうえで非常に便利な機能です。Tkinterのボタンは、Button(parent, text, option...) コンストラクタを使用して作成できます。このコンストラクタを活用することで、ループ処理の中で複数のボタンを効率的に生成することも可能です。 サンプルコード 以下の例では、Pythonの for ループを使用して、指定した範囲内に複数のボタンを作成します。 #必要なライブラリをインポート from tkinter import * from tkinter imp