본문 바로가기
Programming/파이썬 (Python)

[Python] Schedule (Mac OS)

by 쿄니바 (Kyoniba) 2023. 1. 2.
728x90
반응형
 
 
import schedule
import time

def helloword1(text):
    
    print(text)
    

def helloword2(text):
    
    print(text)

    
    

# 5초에 한번씩 함수 실행
test1 = schedule.every(5).seconds.do(helloword1, '5초마다 스케쥴러 실행중')

# 10분에 한번씩 함수 실행
test2 = schedule.every(1).minutes.do(helloword2, '1분마다 스케쥴러 실행중')


num = 0


while True:
    schedule.run_pending()
    time.sleep(1)
    
    num = num + 1
    
    if num > 1:
        schedule.cancel_job(test2)
반응형

1. Schedule Libary

Schedule는  특정한 작업을 실행자가 원하는 일정에 맞게 프로그램을 실행시켜 줄 수 있는 스케줄러입니다.

리눅스 OS 환경의 crontab의 작업 스케줄러와 비슷한 역할을 하고 실행할 주기, 날짜, 시간, 요일 등 을 지정하여 원하는 시점에 작업을 실행하거나 원하는 주기로 반복 실행하도록 구현할 수 있습니다. 파이썬  스케줄러는 다른 작업 스케줄과 다르게  애플리케이션 레벨에서 스케줄러가 수행되는 점이 차이가 있습니다.

 

2. 파이썬 Schedule 설치 방법

Terminal에서 아래와 같이 pip  명령어를 사용하여 설치할 수 있습니다. 

pip install schedule

3. Schedule 기본 구성 방식

1) schedule.default_scheduler = <schedule.Scheduler object>

  • Scheduler의 기본 객체입니다.

2) schedule.jobs = []

  • Scheduler에 등록된 Job 리스트를 보관하는 변수입니다.

3) schedule.every(interval=1)

  • 설정한 intreval 주기를  이용하여 함수를 호출합니다.
  • 스케줄은 schedule.every().(실행일자).function() 와 같은 형태로 정의할 수 있습니다
  • (실행일자)에 사용 가능한 지정자는 second, seconds, minute, minutes, hour, hours, day, days, week, weeks 지정하여 사용합니다.
  • function()에서 사용가능한 함수로는 tag(*tags), at(time_str), to(latest), do(job_func), run() 등이 있습니다.

4) schedule.run_pending()

  • 실행 예약된 모든 작업을 실행합니다.

5) schedule.run_all(delay_seconds=0)

  • 실행 예약에 관계없이 모든 작업을 일괄 실행합니다
  • 모든 Job이 일괄 실행될 때 작업 간의 지연 시간을 delay_seconds를 이용하여 설정할 수 있습니다.

6) schedule.clear(tag=None)

  • 예악된 Job을 Job 리스트에서 모두 삭제합니다.
  • tag가 지정되어 있을 경우에는 지정된 태그의 Job만 삭제됩니다.

7) schedule.cancel_job(job)

  • 예약된 작업의 스케줄을 취소합니다.

8) schedule.next_run()

  • 다음 실행될 작업의 날짜를 반환합니다.

9) schedule.idle_seconds()

  • Job이 수행될 다음 계획(next_Run)까지 남은 시간을 반환합니다
  • 플러스는 남은 시간, 마이너스는 지난 시간을 의미합니다.

 

4. Schedule 실행 sample code

Schedule는 아래의 샘플 코드를 이용하여 실행할 수 있습니다. 

import schedule
import time

def helloword():
    
    print("스케줄러를 실햅합니다")
    

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

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

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



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

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


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

# 매일 "11:11:11"에 함수 실행
schedule.every().day.at("12:00:11").do(함수)




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

5. Schedule 실행 

import schedule
import time

def helloword1(text):
    
    print(text)
    

def helloword2(text):
    
    print(text)

    
    

# 5초에 한번씩 함수 실행
test1 = schedule.every(5).seconds.do(helloword1, '5초마다 스케쥴러 실행중')

# 10분에 한번씩 함수 실행
test2 = schedule.every(1).minutes.do(helloword2, '1분마다 스케쥴러 실행중')


num = 0


while True:
    schedule.run_pending()
    time.sleep(1)
    
    num = num + 1
    
    if num > 1:
        schedule.cancel_job(test2)

<출력 결과>

 

 

 

 

728x90
반응형

댓글