仅在状态更改时在循环内执行命令

时间:2016-09-02 09:59:20

标签: python python-2.7 loops

我正在寻找一种平稳(如果可能的pythonic)方式在一段时间内执行某些事情。每次状态更改时,只有一次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()

1 个答案:

答案 0 :(得分: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)