python-3.x - 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 秒时执行一个脚本......
解决方案
我制作了一个类似的脚本来强制我孩子的 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
推荐阅读
- javascript - 使用带有粘性导航栏的标签会将我带到错误的地方
- java - 比较法在某些情况下违反其总合同
- r - 使用 R 解决 Lucky 26 游戏
- python - 从下载文件安装模块/包
- firebase - Flutter For Web 从 Firestore 获取数据
- swagger - 两个同名但访问权限不同的 API 密钥
- excel - vba填充表范围错误无效的过程调用或参数
- docker - 如何使用一个 nginx docker 容器服务两个站点?
- c++ - 为什么我们必须在 C++ 中释放数组数组而不仅仅是整个“矩阵”
- python - 当我使用 numpy.dot 时,感知器类会导致 Typeerror