如果状态为真,如何在一段时间后在python中使用函数?

问题描述 投票:-1回答:2

使用python3,我想每10秒运行一次函数。但只有当变量仍然“打开”时,该函数才会再次运行。我正在使用random.random函数随机模拟开/关。如果random.random的值小于0.5,则变量y打开,如果y大于0.5则变为off。使用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()

运行这些代码后,我的电脑进入无限循环。你知道我的代码有什么问题吗?我该如何解决这个问题?

python multithreading infinite-loop
2个回答
0
投票
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
投票

你可以在线程中做到这一点

def print_x():
   global y
   for i in xrange(1000000): # or use while True
      if y > 0.5:
          print('x')
      time.sleep(10)
© www.soinside.com 2019 - 2024. All rights reserved.