• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

혹시 특정 시간에 특정 코드가 실행되게끔 할 수 있을까요?

22.12.03 19:35 작성 22.12.03 19:35 수정 조회수 572

0

예를들면 처음 코드 시작 시점으로부터

16분동안 돌아가는 프로그램에서

1. 5분후에는 'a' 출력,

2. 10분후 'b' 출력

3. 15분후 'c' 출력

이런식으로 하고 싶습니다..!

아래처럼 16분간 계속 while문 돌리면서 굉장히 비효율적이게 할 수는 있을 것 같은데 혹시 좋은 방법이 있을까 해서 여쭤봅니당..ㅎㅎ

 

start_time = datetime.now()
after_5min_time = datetime(start_time.year, start_time.month, start_time.day, start_time.hour, start_time.minute + 5, start_time.second)
after_10min_time = datetime(start_time.year, start_time.month, start_time.day, start_time.hour, start_time.minute + 10, start_time.second)
after_15min_time = datetime(start_time.year, start_time.month, start_time.day, start_time.hour, start_time.minute + 15, start_time.second)
interval_list = [after_5min_time, after_10min_time, after_15min_time]
end_time = datetime(start_time.year, start_time.month, start_time.day, start_time.hour, start_time.minute + 16, start_time.second)

while start_time <= end_time:
    if datetime.now() == after_5min_time:
          print('a')
    elif datetime.now() == after_10min_time:
          print('b')
    elif datetime.now() == after_15min_time:
          print('c')

 

 

답변 1

답변을 작성해보세요.

0

오 직접 구현하셨군요.

아래 패키지를 추천드려요.

굉장히 직관적으로 사용할 수 있어요.

한 번 링크 들어가보세요.

https://schedule.readthedocs.io/en/stable/

 

import schedule
import time

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

schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
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)