본문 바로가기
Python/Python FAQ

Python x초마다 함수를 반복해서 실행하는 방법은 무엇인가요?, How to repeatedly execute a function every x seconds?

by 베타코드 2023. 10. 27.
반응형

질문


나는 파이썬에서 매 60초마다 함수를 반복적으로 실행하고 싶습니다(마치 Objective C의 NSTimer이나 JS의 setTimeout처럼). 이 코드는 데몬으로 실행되며, 사용자가 cron을 설정할 필요 없이 매 분마다 파이썬 스크립트를 호출하는 것과 같습니다.

Python에서 구현된 cron에 관한 이 질문에서는 해결책이 x초 동안 sleep()을 하는 것처럼 보입니다. 나는 그렇게 고급 기능이 필요하지 않으므로 아마 다음과 같은 것이 동작할 것 같습니다.

while True:
    # 여기에서 실행되는 코드
    time.sleep(60)

이 코드에 예상 가능한 문제가 있을까요?


답변


만약 당신의 프로그램에 이미 이벤트 루프가 없다면, 일반적인 용도의 이벤트 스케줄러를 구현한 sched 모듈을 사용하세요.

import sched, time

def do_something(scheduler): 
    # 다음 호출을 먼저 스케줄에 등록
    scheduler.enter(60, 1, do_something, (scheduler,))
    print("작업 수행 중...")
    # 그리고 작업을 수행하세요

my_scheduler = sched.scheduler(time.time, time.sleep)
my_scheduler.enter(60, 1, do_something, (my_scheduler,))
my_scheduler.run()

만약 이미 asyncio, trio, tkinter, PyQt5, gobject, kivy 등과 같은 이벤트 루프 라이브러리를 사용하고 있다면, 기존의 이벤트 루프 라이브러리의 메소드를 사용하여 작업을 스케줄하세요.

반응형

댓글