티스토리 뷰

일정 시간마다 특정 함수를 반복적으로 실행하는 방법에 대해서 알아보겠습니다.

 

주기적으로, 동일한 시간 간격으로 어떤 작업을 수행시키고 싶을 때, 이런 방법들을 사용할 수 있습니다.

 

1. sleep과 while문으로 반복 실행

while으로 어떤 코드를 반복 실행시킬 수 있으며, while의 루프 끝에 sleep을 추가하면, 어떤 시간 주기로 특정 코드를 반복 수행시킬 수 있습니다. time.sleep(n)은 n초 코드 실행을 지연시킵니다. n초 뒤에 다음 코드 실행됩니다.

import time

while True:
    # 실행할 코드
    print("일정 시간마다 실행되는 코드")
    
    # 5초 동안 대기
    time.sleep(5)

실행 결과:

일정 시간마다 실행되는 코드
일정 시간마다 실행되는 코드
일정 시간마다 실행되는 코드

2. schedule로 반복 실행

schedule은 주기적으로 어떤 함수를 실행할 수 있도록 도와줍니다.

  • schedule.every(5).seconds.do(execute_code) : 5초마다 execute_code() 함수를 실행합니다.
  • schedule.run_pending() : 이 함수를 실행하지 않으면 schedule을 설정해도, 함수가 실행되지 않습니다. run_pending()이 호출되었을 때, 조건에 맞는 작업이 있을 때, 그 작업을 실행시킵니다. 따라서, 이 함수는 while문에서 주기적으로 호출하여 스케줄이 될 수 있도록 합니다. while에서 너무 많이 호출될 필요는 없어서 1초 sleep 하면서 반복 호출됩니다.
import schedule
import time

def execute_code():
    print("일정 시간마다 실행되는 코드")

# 스케줄 설정
schedule.every(5).seconds.do(execute_code)

while True:
    schedule.run_pending()
    time.sleep(1)

실행 결과:

일정 시간마다 실행되는 코드
일정 시간마다 실행되는 코드
일정 시간마다 실행되는 코드

 

3. Timer로 반복 실행

threading.Timer(N, function).start()는 N초 뒤에 function 함수를 실행합니다.

 

이것을 이용하여 어떤 함수를 실행하여 특정 코드를 수행시키고, 함수 종료 시점에 다시 동일한 함수를 몇 초 뒤에 실행되도록 Timer로 예약하면 특정 주기로 반복 실행시킬 수 있습니다.

import threading

def execute_code():
    # 실행할 코드
    print("일정 시간마다 실행되는 코드")
    # 다음 실행 예약
    threading.Timer(5, execute_code).start()

# 최초 실행
execute_code()