таймер / счетчик в питоне - PullRequest
0 голосов
/ 18 января 2019

Добрый день всем.Я пытаюсь установить функцию 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 секунд ...

1 Ответ

0 голосов
/ 18 января 2019

Я сделал аналогичный сценарий для отключения телевизора Roku моего ребенка, если он включен.Я буду держать это всю ночь, просто чтобы ребенок не смотрел телевизор ночью.(У нее есть TCL Roku TV).Если я сделаю рефакторинг кода, который вы используете, он будет выглядеть примерно так:

#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

, это немного глупо, но да, знание метода внутри 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
...