달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
728x90
반응형

어떤 프로그램을 사용하다가 보면

특정 시간대에 실행하는 경우가 많이 있습니다.

 

windows의 스케쥴링을 이용한다거나 cron을 이용해서 할수도 있지만,

파이썬에서는 간단한 스케쥴 라이브러리가 있습니다.

 

우선 아래와 같이 설치를 하고

pip install schedule

[참고자료]

GitHub - dbader/schedule: Python job scheduling for humans.

 

GitHub - dbader/schedule: Python job scheduling for humans.

Python job scheduling for humans. Contribute to dbader/schedule development by creating an account on GitHub.

github.com

 

라이브러리에 설명된 몇 가지 예시

import schedule
import time
import datetime

def job(message='stuff'):
    print(datetime.datetime.now())
    print("I'm working...")

schedule.every(3).seconds.do(job) # 3초 마다 실행
# schedule.every(10).minutes.do(job) # 10분 마다 실행
# schedule.every().hour.do(job) # 매시간마다 실행
# schedule.every().day.at("10:30").do(job) # 매일 10:30에 실행
# schedule.every(5).to(10).minutes.do(job) # 05:10분에 실행
# schedule.every().monday.do(job) # 월요일마다 실행
# schedule.every().wednesday.at("13:15").do(job) # 수요일마다 13:15에 실행
# schedule.every().minute.at(":17").do(job) # 매시간 17분마다 실행
# schedule.every().hour.do(job, message='things') # 매시간마다 변수와 함께 실행(default는 'stuff')

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

※ 3초 마다 실행 확인

이외에도 다양한 예제 파일이 아래 사이트에 있으니 필요한 옵션들을 골라서 사용하면 되구요.

그중 몇 가지 대표적인 기능들을 아래에 적어놨으니

다양하게 조합하셔서 사용하시면 좋을 것 같네요.

schedule/examples.rst at master · dbader/schedule · GitHub

 

GitHub - dbader/schedule: Python job scheduling for humans.

Python job scheduling for humans. Contribute to dbader/schedule development by creating an account on GitHub.

github.com

Run a job every x minute

import schedule
import time

def job():
    print("I'm working...")

# Run job every 3 second/minute/hour/day/week,
# Starting 3 second/minute/hour/day/week from now
schedule.every(3).seconds.do(job)
schedule.every(3).minutes.do(job)
schedule.every(3).hours.do(job)
schedule.every(3).days.do(job)
schedule.every(3).weeks.do(job)

# Run job every minute at the 23rd second
schedule.every().minute.at(":23").do(job)

# Run job every hour at the 42rd minute
schedule.every().hour.at(":42").do(job)

# Run jobs every 5th hour, 20 minutes and 30 seconds in.
# If current time is 02:00, first execution is at 06:20:30
schedule.every(5).hours.at("20:30").do(job)

# Run job every day at specific HH:MM and next HH:MM:SS
schedule.every().day.at("10:30").do(job)
schedule.every().day.at("10:30:42").do(job)

# Run job on a specific day of the week
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
schedule.every().minute.at(":17").do(job)

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

 

Cancel a job

To remove a job from the scheduler, use the schedule.cancel_job(job) method

import schedule

def some_task():
    print('Hello world')

job = schedule.every().day.at('22:30').do(some_task)
schedule.cancel_job(job)

 

 

감사합니다.

728x90
반응형
:
Posted by 패치#노트