본문 바로가기

개발/Python & Flask

Python Sched 라이브러리 (몇초마다 반복실행)

 

파이썬으로 N 초마다 함수 실행하는 라이브러리는 여러개다.

sched, scheduler, APScheduler, threading.Timer ... 정도 있는데,

sched는 내장 라이브러리기 때문에 별도의 설치없이 사용할 수 있다.

 

s = sched.scheduler( time.time, time.sleep() )  #로 S 인스턴스 생성 후,
s.enter ( time, priority, function, argment, kwargs)      #를 하면 time 초 후에 함수가 1번 입력되고

s.run()                                                   #를 하면 입력된 함수가 실행된다.


그래서 main 함수에서 위 구문을 실행하고,

fuction 내부에서 스스로를 불러줘야 한다.
argument 가 없는 함수일 경우, ()로 대체했더니 실행 가능했다.

 

가령 예를 들면

 

1

2

3

4

5

6

7

def a():

     print("hello!")

     s.enter( 51, a, () )

 

= sched.scheduler( time.time, time.scleep() )

s.enter( 01, a, () )

s.run

 

 

이렇게 하면 실행즉시 a 함수가 실행되고,

5초 주기로 a 함수가 실행된다.

 

Ctrl + C 를 할 시 중단되기도 하고,

def a() 함수 내부에 변수를 설정해서 중단할 수도 있겠다.

 

1

2

3

4

5

6

7

8

9

10

11

end = False

def a():

    if end :

        return

    else :

        print(a)

        s.enter( 51, a, () )

 

= sched.scheduler( time.time, time.scleep() )

s.enter( 01, a, () )

s.run

 

cs

위와 같이 end 라는 boolean 변수 설정해서, True로 바뀌면 실행을 안하겠지요!

반응형