타이머(Timer) 객체는 지정된 시간 간격에 따라 특정 작업을 실행하기 위해 사용됩니다. 타이머 객체를 활용하면 정해진 시간 후에 동작을 수행하는 스레드를 손쉽게 생성할 수 있습니다.
Python에서 Timer는 threading 모듈의 Thread 클래스를 상속받은 서브클래스입니다. 따라서 일반 스레드와 마찬가지로 start() 메서드를 호출하여 타이머를 시작합니다.
타이머 객체 생성하기
타이머 객체는 다음과 같은 문법으로 생성합니다.
threading.Timer(interval, function, args=None, kwargs=None)
각 매개변수의 의미는 다음과 같습니다.
- interval: 함수가 실행되기까지 대기할 시간(초 단위)
- function: 지정된 시간이 지난 후 실행할 함수
- args: 함수에 전달할 위치 인자(tuple 형태)
- kwargs: 함수에 전달할 키워드 인자(dictionary 형태)
타이머 기본 예제
아래 예제에서는 프로그램이 먼저 "Bye"를 출력하고, 그 후 3초가 지나면 "Python Program"이 출력됩니다.
예제 코드
import threading
def mytimer():
print("Python Program\n")
my_timer = threading.Timer(3.0, mytimer)
my_timer.start()
print("Bye\n")실행 결과
Bye Python Program
이 예제에서 타이머는 한 번만 실행되는 것이 아니라, 함수 내부에서 새로운 타이머를 다시 생성하고 시작하기 때문에 3초마다 반복적으로 실행되는 구조입니다. 이러한 방식을 활용하면 주기적인 작업을 간단하게 구현할 수 있습니다.
타이머 취소하기
실행 전에 타이머를 중단해야 할 경우에는 cancel() 메서드를 사용합니다. 문법은 다음과 같습니다.
timer.cancel()
예제 코드
import threading
def mytimer():
print("Python Program\n")
my_timer = threading.Timer(3.0, mytimer)
my_timer.start()
my_timer = threading.Timer(3.0, mytimer)
my_timer.start()
print("Cancelling timer\n")
my_timer.cancel()
print("Bye\n")실행 결과
Cancelling timer Bye
cancel() 메서드를 호출하면 아직 실행되지 않은 타이머가 취소되어, 지정된 함수가 호출되지 않고 프로그램이 종료됩니다. 단, 이미 실행이 시작된 타이머는 취소할 수 없으므로 주의해야 합니다.
정리
Python의 threading.Timer 클래스는 지연 실행이나 반복 작업을 구현할 때 유용한 도구입니다. 핵심 메서드는 다음 두 가지입니다.
start(): 타이머를 시작하고 설정된 시간 후에 함수를 실행cancel(): 아직 실행되지 않은 타이머를 취소
스케줄링이 필요한 간단한 작업이라면 별도의 외부 라이브러리 없이 표준 라이브러리만으로 충분히 처리할 수 있습니다.