首页 > 解决方案 > python中的定时器/计数器

问题描述

美好的一天。我正在尝试设置一个带时间的 IF 函数,它将检查某些东西是否在一段时间内工作,如果它不工作,那么它将重置/重新启动脚本。

if ledBlue.off() >= 10 seconds
command="sudo python3 project-2.py"

但是,我觉得我会使用计数器,但我绝对不确定我将如何去做。

我目前拥有的本节代码如下:

if failed:
   ledBlue.off()
   if ledBlue.off() >= 10 seconds
       command="sudo python3 project.py"
       time.sleep(2)
       command="sudo restart service"
       os.system(command)
else:
   ledBlue.on()

如果我对计时器的想法是真的,我将不得不实现一个time.counter()函数来查看ledBlue.off()它实现代码之前的时间。

请问我该如何解决这个问题...

我不是要暂停脚本一段时间,而是要查看 ledBlue.off() 已经运行了多长时间,然后在它关闭超过 10 秒时执行一个脚本......

标签: python-3.xtimercounter

解决方案


我制作了一个类似的脚本来强制我孩子的 Roku 电视在打开时关闭。我会整晚都开着,以确保我的孩子晚上不看电视。(她有一台 TCL Roku 电视)。如果我重构代码供您使用,它看起来像

#import required libs
import keyboard
...
count = 0
while True:
    if ledBlue.off() = true
        sleep(1)
        count += 1
        if count == 10:
            run_py="sudo python3 project.py"
            os.system(run_py)
            time.sleep(2)
            restart_service="sudo restart service"
            os.system(restart_service)
            count = 0 
        elif keyboard.is_pressed('q'):
            break
        else:
            pass

这有点hacky,但是是的,知道里面的方法ledBlue()可以用来优化它。我添加了键盘库,因为这个脚本会继续运行,所以你可以按“q”来中断循环。

这是我的原始代码:

    def DenyRemote(self):
        state = self.device_pw_state()
        while True:
            sleep(10)
            if state == "PowerOn":
                self.roku._post('/keypress/Power')
            elif keyboard.is_pressed('q'):
                break
            else:
                pass

推荐阅读