Profile picture

[Python] 정해진 주기마다 함수 실행하기 (Schedule)

JaehyoJJAng2023년 06월 08일

1. 설치

$ pip install schedule
Installing collected packages: schedule
Successfully installed schedule-1.2.1

2. schedule 패키지 주기 설정

2-1. 시/분/초 단위 실행

# 5초에 한 번씩 함수 실행
schedule.every(5).seconds.do(함수)

# 10분에 한 번씩 함수 실행
schedule.every(10).minutes.do(함수)

# 2시간에 한 번씩 함수 실행
schedule.every(2).hours.do(함수)

2-2 일/주 단위로 실행

# 3일에 한 번씩 함수 실행
schedule.every(3).days.do(함수)

# 3주에 한 번씩 함수 실행
schedule.every(3).weeks.do(함수)

2-3 매일 정해진 시각에 실행

위에서 언급한 시,분,초,일,주 단위를 조합하여 더 디테일하게 주기 설정이 가능

# 매일 14시 30분에 함수 실행
schedule.every().day.at('14:30').do(함수)

# 매일 14시 30분 30초에 함수 실행
schedule.every().day.at('14:30:30').do(함수)

2-4 매주 정해진 요일의 특정 시각에 실행

모두 소문자로 입력 해야함 (monday,tuesday ...)

# 매주 토요일 14시에 함수 실행
schedule.every().saturday.at('14:00').do(함수)

사용 예시

# 관련 패키지 import
import schedule
import time

# 실행 함수 선언
def say_hello() -> None:
    print('안녕하세요!')

# 실행 주기 설정
schedule.every(1).seconds.do(say_hello)

# 스케줄 시작
while True:
    schedule.run_pending()
    time.sleep(1)

인자를 받는 함수 예시

인자를 받는 함수를 사용하는 경우 아래와 같이 사용

# 관련 패키지 import
import schedule
import time

# 실행 함수 선언
def say_hello(name: str) -> None:
    print(f'{name}님 안녕하세요!')

# 실행 주기 설정
schedule.every(1).seconds.do(say_hello,'leejaehyo')

# 스케줄 시작
while True:
    schedule.run_pending()
    time.sleep(1)

Loading script...