2016-09-02 12 views
0

whileループの中で何かを実行するためのスムーズな(そして可能な場合はpythonic)方法を探しています。現在の値が何であれコンソールをスパムするのではなく、一度変更してください。ステータス変更時にのみループ内でコマンドを実行

私の一般的なコード:

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)