Python 무한 루프란?
무한 루프(infinite loop)는 프로그램이 스스로 종료되지 못하고 끝없이 반복 실행되는 상태를 말합니다. 루프의 조건식이 항상 참(True)으로 유지되어 탈출 조건이 결코 충족되지 않을 때 발생하며, 이 경우 외부의 개입 없이는 루프가 멈추지 않습니다.
무한 루프가 발생하는 원인
대표적인 원인은 다음과 같습니다.
- 종료 조건이 절대 거짓이 되지 않는 경우: while 루프의 조건이 항상 True로 평가될 때
- 루프 내부에서 변수가 갱신되지 않는 경우: 반복문 안에서 카운터 변수를 증가시키거나 조건을 변경하는 코드가 누락된 경우
- 의도치 않은 논리 오류: 조건식 작성 실수로 인해 탈출 조건이 영원히 충족되지 않는 경우
Ctrl+C로 강제 종료하기
실행 중인 프로그램이 무한 루프에 빠졌다면, 키보드에서 Ctrl + C를 눌러 키보드 인터럽트(KeyboardInterrupt)를 발생시켜 강제로 중단할 수 있습니다. Python 인터프리터는 이 신호를 감지하면 실행 중인 루프를 즉시 멈추고 다음과 같은 예외 메시지를 출력합니다.
Traceback (most recent call last):
...
KeyboardInterrupt
무한 루프를 예방하는 코딩 습관
- while 루프를 작성할 때 종료 조건이 언젠가 거짓(False)이 되도록 설계합니다.
- 반복문 내부에서 조건 변수를 올바르게 갱신하고 있는지 확인합니다.
- 필요하다면
break문을 활용해 특정 조건에서 루프를 명시적으로 탈출합니다. - 복잡한 로직에는 print 문이나 로깅을 추가해 루프의 진행 상황을 추적합니다.
무한 루프는 서버나 게임 루프처럼 지속적인 동작이 필요한 프로그램에서 의도적으로 활용되기도 하지만, 잘못 설계되면 시스템 자원을 고갈시키고 프로그램 전체를 멈추게 할 수 있습니다. 따라서 루프를 작성할 때는 종료 조건을 항상 신중하게 설계하는 것이 중요합니다.