주기별로 원하는 시간(초,분,시간,요일,일,월)마다 Python 스크립트를 자동으로 실행(반복)하는 코드를 작성하려면 schedule
라이브러리를 사용할 수 있습니다. 이 라이브러리를 사용하면 주기별로 작업을 예약하고 실행할 수 있습니다.
먼저 schedule
라이브러리를 설치해야 합니다.
pip install schedule
주기와 실행할 Python 스크립트 파일 리스트를 등록하는 방법입니다. 아래 코드에서는 job_list
라는 리스트를 사용하여 주기와 실행할 스크립트를 등록합니다. 각 항목은 튜플로 구성되며, 첫 번째 요소는 주기를 나타내는 문자열이고, 두 번째 요소는 실행할 Python 스크립트의 경로입니다.
import schedule
import time
import subprocess
# 주기와 실행할 스크립트 경로를 등록합니다.
job_list = [
("every 1 minute", "/path/to/script1.py"),
("every 2 hours", "/path/to/script2.py"),
("every day at 3:00", "/path/to/script3.py"),
]
# 등록된 작업을 스케줄에 추가합니다.
for job in job_list:
schedule.every().minute.at(job[0]).do(subprocess.run, ["python", job[1]])
# 주기적으로 작업을 실행합니다.
while True:
schedule.run_pending()
time.sleep(1)
이 코드는 주기별로 등록된 스크립트를 실행합니다. schedule.every().minute.at(job[0]).do(subprocess.run, ["python", job[1]])
코드는 주기와 스크립트를 실행하는 방법을 정의합니다.
주기적으로 작업을 실행하기 위해 while True
루프를 사용하며, schedule.run_pending()
은 아직 실행되지 않은 작업이 있는지 확인하고 실행합니다. 코드 내에서 주기를 지정하는 부분에서 "every 1 minute"과 같은 문자열을 적절히 수정하여 원하는 주기를 설정할 수 있습니다.
이 코드를 사용하면 등록된 주기에 따라 Python 스크립트가 실행됩니다. 각 스크립트는 별도의 프로세스로 실행되므로, 병렬로 여러 작업을 수행할 수 있습니다.
schedule
라이브러리를 사용하여 작업을 주기적으로 예약할 때, 주기를 지정하는 방법은 다음과 같습니다. 주기는 schedule.every()
메서드를 사용하여 정의하며, 다양한 시간 간격을 지정할 수 있습니다.
주기를 정의하는 구문은 schedule.every().<interval>
형식을 따르며, <interval>
부분에는 다음과 같은 시간 간격을 지정할 수 있습니다.
- 분 단위:
.minute
- 시간 단위:
.hour
- 일 단위:
.day
- 주 단위:
.week
- 월 단위:
.month
예를 들어, 매 30분마다 실행하려면 schedule.every(30).minutes
를 사용하고, 매 시간 정각에 실행하려면 schedule.every().hour
를 사용합니다. 주기적인 작업을 정의한 후에 .at()
메서드를 사용하여 작업이 언제 실행되어야 하는지 세부적으로 지정할 수 있습니다.
다음은 주기를 더 자세히 설명하는 예제 코드입니다.
import schedule
import time
# 30분마다 실행
schedule.every(30).minutes.do(job_function)
# 1시간마다 실행
schedule.every().hour.do(job_function)
# 매일 9시 30분에 실행
schedule.every().day.at("09:30").do(job_function)
# 매주 월요일 오전 10시에 실행
schedule.every().monday.at("10:00").do(job_function)
# 매월 1일에 실행
schedule.every().month.at("00:00").do(job_function)
job_function
은 실행할 작업을 나타내며, 주기적으로 실행하려는 작업을 이 함수로 대체하면 됩니다.
이러한 주기를 사용하면 schedule
라이브러리를 통해 작업을 예약하고 주기적으로 실행할 수 있습니다.
아래는 schedule
라이브러리를 사용하여 다양한 유형의 자동화 작업을 수행하는 코드 예제와 설명입니다.
import schedule
import time
# 실행할 작업 함수 정의
def job():
print("안녕하세요...")
# 1. 간격별 작업 예약
# 3초마다 job 실행
schedule.every(3).seconds.do(job)
# 3분마다 job 실행
schedule.every(3).minutes.do(job)
# 3시간마다 job 실행
schedule.every(3).hours.do(job)
# 3일마다 job 실행
schedule.every(3).days.do(job)
# 3주마다 job 실행
schedule.every(3).weeks.do(job)
# 2. 특정 시각에 작업 예약
# 매분 23초에 job 실행
schedule.every().minute.at(":23").do(job)
# 매시간 42분에 작업 실행
schedule.every().hour.at(":42").do(job)
# 5시간 20분 30초마다 작업 실행
schedule.every(5).hours.at("20:30").do(job)
# 3. 특정 날짜 및 시각에 작업 예약
# 매일 10:30에 job 실행
schedule.every().day.at("10:30").do(job)
# 매일 10:30:42에 job 실행
schedule.every().day.at("10:30:42").do(job)
# 4. 주 중 특정 요일에 작업 예약
# 매주 월요일에 job 실행
schedule.every().monday.do(job)
# 매주 수요일 13:15에 job 실행
schedule.every().wednesday.at("13:15").do(job)
# 주기적으로 작업을 실행하는 무한 루프
while True:
schedule.run_pending() # 예약된 작업을 실행
time.sleep(1) # 1초 대기
# 위의 코드를 실행하면 지정된 주기에 따라 작업 함수인 job()이 실행됩니다.
위의 코드는 다양한 주기와 시간에 작업을 예약하는 예제를 제공하며, 필요에 따라 주기와 시간을 조절하여 사용할 수 있습니다. 코드의 주석에 작업을 예약하는 방법과 예제가 자세히 설명되어 있으므로 원하는 스케줄에 맞게 수정하여 사용하실 수 있습니다.
참고 : https://schedule.readthedocs.io/en/stable/
Jupyter Notebook을 예약하는 방법
댓글