Python에서 일정 잡기

Fariba Laiq 2023년10월10일
  1. Python에 일정 라이브러리 설치
  2. 초를 간격으로 사용하여 주기적으로 작업 예약
  3. 분, 시간 및 일을 간격으로 사용하여 정기적으로 작업 예약
  4. HH:MM 형식의 시간을 간격으로 사용하여 주기적으로 작업 예약
  5. 함수 데코레이터를 사용하여 작업 예약
Python에서 일정 잡기

이 자습서에서는 특정 시간 간격 후에 주기적으로 작업을 예약하는 Python의 일정 패키지를 보여줍니다.

일정은 지정된 시간 간격으로 주기적으로 실행되도록 작업을 예약하는 데 사용되는 Python의 경량 프로세스 스케줄러 라이브러리입니다.

인간 친화적인 구문을 사용하여 함수 또는 호출 가능한 객체를 호출하여 이메일 전송, 알림 설정, 통화 가격 가져오기 또는 비트코인과 같은 작업을 주기적으로 자동화할 수 있습니다.

Python에 일정 라이브러리 설치

이 패키지를 사용하려면 먼저 다음 명령을 사용하여 이 패키지를 설치해야 합니다.

#Python 3.x
pip install schedule

작업을 예약하기 위해 다음 구문을 사용합니다.

통사론:

# Python 3.x
Schedule.every(interval).[timeframe].do(function)

매개변수:

  1. 간격은 임의의 정수일 수 있습니다.
  2. 타임프레임은 초, 분, 시간, 일 또는 월요일, 화요일 등과 같은 요일 이름이 될 수 있습니다.
  3. do() 메서드는 함수 이름을 schedule에 대한 인수로 사용합니다.

초를 간격으로 사용하여 주기적으로 작업 예약

다음 코드에는 5초마다 주기적으로 실행되도록 예약된 task라는 메서드가 있습니다. every() 메서드에 대한 인수로 시간 간격(이 경우 5초)을 정의합니다.

머신이 지정된 시간에 도달하면 자동으로 실행되는 do() 메서드에 대한 인수로 예약할 함수를 지정합니다. 마지막으로 while 루프에서 run_pending() 함수를 실행하여 예약된 작업을 계속 실행합니다.

출력에서 Task is running 메시지는 프로그래밍된 대로 5초마다 계속 표시됩니다.

예제 코드:

# Python 3.x
import schedule as s
import time as t


def task():
    print("Task is running")


s.every(5).seconds.do(task)
while True:
    s.run_pending()
    t.sleep(1)

출력:

#Python 3.x
Task is running
Task is running
Task is running
Task is running
Task is running

분, 시간 및 일을 간격으로 사용하여 정기적으로 작업 예약

간격을 지정된 분, 시간 또는 요일로 변경하려면 다음과 같은 코드를 작성할 수 있습니다. 출력은 설정된 시간에 따라 메시지를 계속 표시합니다.

예제 코드:

# Python 3.x
import schedule as s
import time as t


def task():
    print("Task is running")


s.every(5).minutes.do(task)
s.every(10).hours.do(task)
s.every().monday.do(task)
while True:
    s.run_pending()
    t.sleep(1)

출력:

#Python 3.x
Task is running
Task is running
Task is running

HH:MM 형식의 시간을 간격으로 사용하여 주기적으로 작업 예약

함수에 대한 인수로 HH:MM:SS 형식으로 특정 시간을 설정할 수도 있습니다. 메시지는 지정된 간격마다 주기적으로 계속 표시됩니다.

예제 코드:

# Python 3.x
import schedule as s
import time as t


def task():
    print("Task is running")


s.every().day.at("04:21").do(task)
s.every().monday.at("12:00").do(task)
while True:
    s.run_pending()
    t.sleep(1)

출력:

#Python 3.x
Task is running

함수 데코레이터를 사용하여 작업 예약

함수 데코레이터는 함수를 입력으로 받아들이고 일부 기능을 추가한 다음 함수를 반환합니다. 여기에서 @repeat를 사용하여 작업 기능을 예약합니다.

예제 코드:

# Python 3.x
from schedule import every, run_pending, repeat
import time as t


@repeat(every(5).seconds)
def task():
    print("Task is running")


while True:
    run_pending()
    t.sleep(1)

출력:

#Python 3.x
Task is running
Task is running
Task is running

한 번에 작업 실행

스케줄 인스턴스와 함께 CancelJob을 사용하여 실행 후 작업을 취소하면 작업을 한 번에 실행할 수 있습니다.

예제 코드:

# Python 3.x
import schedule as s
import time as t


def task():
    print("Task is running")
    return s.CancelJob


s.every(5).seconds.do(task)
while True:
    s.run_pending()
    t.sleep(1)

출력:

#Python 3.x
Task is running

모든 작업 취소

스케줄러 인스턴스에서 clear() 메서드를 사용하여 스케줄러에서 모든 작업을 취소할 수 있습니다. 여기에서는 get_jobs() 메서드를 사용하여 스케줄러에서 예약된 작업을 인쇄했습니다.

예제 코드:

# Python 3.x
import schedule as s
import time as t


def task():
    print("Task is running")


s.every(5).seconds.do(task)
print("Jobs:", s.get_jobs())
s.clear()
print("Jobs:", s.get_jobs())

출력:

#Python 3.x
Jobs: [Every 5 seconds do task() (last run: [never], next run: 2022-04-08 16:59:37)]
Jobs: []
작가: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn