2016-09-02 3 views
0

상태 변화마다 한 번만 True 루프를 실행하는 방법을 찾고 있는데, 뭔가 바뀌면 새로운 것을 인쇄해야합니다. 현재 값이 무엇이든 콘솔을 스팸하지 말고 한 번 변경하십시오.상태 변경시 루프 내에서만 명령 실행

내 일반적인 코드 :

def function() 

    while True: 
     check_status() #External function that returns a new status value if it changes 
     print check_status() 

     if status == 0: 
      do_something() 
      continue 
     if status == 1: 
      do_something_else() 
      continue 
function() 
+0

이전 상태를 기억하거나 이벤트를 만드는 것이 좋습니다. – soon

답변

1

나는 이런 식으로 뭔가를 당신은 단순히 이전의 상태를 추적 할 수 있습니다 만 새 상태에 도달하면 새로운 작업을 실행, 사전에 모든 작업을 둘 것 :

from time import sleep 

tasks = {1:do_something, 
     2:do_something_else} 

prev_status = None 
while True: 
    status = check_status() 
    if status != prev_status: 
     prev_status = status 
     print "status changed to: {}".format(status) 
     tasks[status]() 
    sleep(.1)