반응형
파이썬(Python) 스케줄러 패키지(Schedule Package)
- 스케줄러 패키지(schedule package) 경우 기본 내장모듈에 포함되어 있지 않아 추가 설치가 필요합니다.
- 프로그램을 작성해 수행하다 보면 한번만 수행하거나 연속적으로 수행하는 것외에 특정 일정에 맞춰 수행해야 하는 경우가 있습니다. 특정일저에 맞춰 작업을 수행하는 것을 수케줄러(scheduler)라고 합니다.
(설치방법)
pip install schedule
(결과)
Collecting schedule
Using cached schedule-1.2.2-py3-none-any.whl.metadata (3.8 kB)
Using cached schedule-1.2.2-py3-none-any.whl (12 kB)
Installing collected packages: schedule
Successfully installed schedule-1.2.2
(예제1)
import schedule
import time
# 함수
def job():
print("스케줄러에 따른 작업 수행")
# 스케쥴러 선언
schedule.every(2).seconds.do(job) # 2초마다 job 실행
schedule.every(5).minutes.do(job) # 5분마다 job 실행
schedule.every(4).hours.do(job) # 4시간마다 job 실행
schedule.every(3).days.do(job) # 3일마다 job 실행
schedule.every(1).weeks.do(job) # 1주일마다 job 실행
schedule.every().minute.at(":15").do(job) # 매분 15초마다 job 실행
schedule.every().hour.at(":30").do(job) # 매시 30분마다 job 실행
schedule.every().day.at("10:30:20").do(job) # 매일 10시30분20초에 job 실행
schedule.every(10).minutes.at(":10").do(job) # 10분마다 10초에 job 실행
schedule.every(3).hours.at("30:45").do(job) # 3시간마다 30분45초에 job 실행
schedule.every(2).days.at("05:30:15").do(job) # 2일마다 5시30분15초에 job 실행
schedule.every().day.at("09:01:15").do(job) # 매일 9시1분15초에 job 실행
schedule.every().monday.do(job) # 월요일마다 job 실행
schedule.every().wednesday.at("01:15").do(job) # 수요일마다 1시15분에 job 실행
# 스케줄러 실행
while True:
schedule.run_pending()
time.sleep(1)
(결과)
스케줄러에 따른 작업 수행
스케줄러에 따른 작업 수행
스케줄러에 따른 작업 수행
스케줄러에 따른 작업 수행
스케줄러에 따른 작업 수행
(설명)
- 프로그램 실행시 schedule.run_pending() 명령 수행으로 정해지 주기(초/분/시간/일/주) 마다 하나의 작업인 job() 함수를 시행합니다.
- 강제 종료후에 schedule.clear()를 실행하지 않은 상태에서 다시 실행하면 이전에 수행하던 작업을 계속 진행하게 됩니다.
schedule.clear() # 작업을 초기화
schedule.run_all() # 작업을 바로수행
schedule.run_all(delay_seconds=숫자) # 숫자(초) 만큼 대기후 작업을 수행
(예제2)
import schedule
import time
from datetime import datetime
# 다중 작업을 위한 함수 지정
def job1():
now = datetime.now()
print("[** 작업1] {:%H:%M:%S}".format(now))
def job2():
now = datetime.now()
print(" [>> 작업2] {:%H:%M:%S}".format(now))
schedule.clear()
schedule.every(1).seconds.do(job1) # 매초마다 job1() 함수 실행
schedule.every(3).seconds.do(job2) # 3초마다 job2() 함수 실행
while True:
try:
schedule.run_pending()
time.sleep(1)
except:
print("작업 강제 종료")
schedule.clear() # 기본 스케줄러 객체를 제거
break
(결과)
[** 작업1] 11:08:33
[** 작업1] 11:08:34
[>> 작업2] 11:08:35
[** 작업1] 11:08:35
[** 작업1] 11:08:36
[** 작업1] 11:08:37
[>> 작업2] 11:08:38
[** 작업1] 11:08:38
[** 작업1] 11:08:39
[** 작업1] 11:08:40
[>> 작업2] 11:08:41
[** 작업1] 11:08:41
[** 작업1] 11:08:42
[** 작업1] 11:08:43
[>> 작업2] 11:08:44
작업 강제 종료
(예제3)
import time
import schedule
from datetime import datetime
# 다중 작업을 위한 함수 지정
def job1():
now = datetime.now()
print("[** 작업1] {:%H:%M:%S}".format(now))
def job2():
now = datetime.now()
print(" [>> 작업2] {:%H:%M:%S}".format(now))
def job3():
now = datetime.now()
print(" [$$ 작업3] {:%H:%M:%S}".format(now))
# 스케줄러 생성
scheduler1 = schedule.Scheduler() # 스케줄러 객체(scheduler1) 생성
scheduler2 = schedule.Scheduler() # 스케줄러 객체(scheduler2) 생성
scheduler1.every().second.do(job1) # 매초마다 job1() 함수 실행
scheduler1.every().second.do(job2) # 매초마다 job2() 함수 실행
scheduler2.every(3).seconds.do(job3) # 3초마다 job3() 함수 실행
while True:
try:
# 각 스케줄러 객체마다 run_pending()를 실행
scheduler1.run_pending() # scheduler1 객체 실행
scheduler2.run_pending() # scheduler2 객체 실행
time.sleep(1)
except:
print("작업 강제 종료")
scheduler1.clear() # 스케줄러 객체(scheduler1)를 제거
scheduler2.clear() # 스케줄러 객체(scheduler2)를 제거
break
(결과)
[** 작업1] 11:13:18
[>> 작업2] 11:13:18
[** 작업1] 11:13:19
[>> 작업2] 11:13:19
[** 작업1] 11:13:20
[>> 작업2] 11:13:20
[$$ 작업3] 11:13:20
[** 작업1] 11:13:21
[>> 작업2] 11:13:21
[** 작업1] 11:13:22
[>> 작업2] 11:13:22
[** 작업1] 11:13:23
[>> 작업2] 11:13:23
[$$ 작업3] 11:13:23
[** 작업1] 11:13:24
[>> 작업2] 11:13:24
작업 강제 종료
반응형
'개발(IT) > Python(파이썬)' 카테고리의 다른 글
파이썬(Python) 문자열 처리 (0) | 2024.11.30 |
---|---|
파이썬(Python) 파일 읽고(read) 쓰기(write) (0) | 2024.11.23 |
파이썬(Python) 패키지(Package) (0) | 2024.11.16 |
파이썬(Python) 내장모듈(날짜/시간) (1) | 2024.11.09 |
파이썬(Python) 내장모듈(파일) (0) | 2024.11.09 |