Как использовать функцию в Python через определенное время, только если состояние истинно? - PullRequest
0 голосов
/ 17 сентября 2018

Используя python3, я хочу запускать функцию каждые 10 секунд.Но функция будет работать снова, только если переменная все еще включена.Я симулирую случайное включение / выключение с помощью функции random.random.Если значение random.random меньше 0,5, переменная y включена, а если y больше 0,5, она отключается.С помощью threading.timer я устанавливаю функцию для запуска каждые 10 секунд.Для простоты я просто вставляю print("x") в тело функции.

import threading
import random

def machine_on():
    threading.Timer(10.0, machine_on).start() #called every 10 seconds 
    print("x")

y=0        
if y < 0.5:  
    machine_on()
    y = random.random()
else:
    sys.exit()

После запуска этого кода мой компьютер входит в бесконечный цикл.Вы знаете, в чем проблема с моим кодом?Как я могу решить проблему?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018
import random
import time

def machine_on():
            print("x")
y=0         
while True:
    if y < 0.5:  
        machine_on()
        y = random.random()
        print(y)
        time.sleep(10) 
    else:
        break
0 голосов
/ 17 сентября 2018

Вы можете сделать это в потоке

def print_x():
   global y
   for i in xrange(1000000): # or use while True
      if y > 0.5:
          print('x')
      time.sleep(10)
...