使用倒计时跳出while循环Python
我将直接进入代码向您展示,我正在尝试在计时器结束时停止while循环。有办法吗使用倒计时跳出while循环Python,python,time,timer,while-loop,countdown,Python,Time,Timer,While Loop,Countdown,我将直接进入代码向您展示,我正在尝试在计时器结束时停止while循环。有办法吗 from threading import Timer def run(timeout=30, runs): timer(timeout) while runs > 0 or over(): #Do something print "start looping" def timer(time): t = Timer(time, over) pr
from threading import Timer
def run(timeout=30, runs):
timer(timeout)
while runs > 0 or over():
#Do something
print "start looping"
def timer(time):
t = Timer(time, over)
print "timer started"
t.start()
def over():
print "returned false"
return False
如您所见,我试图使用函数over()
来停止while循环。当前,当我的时间停止时,over返回为false,但它不会影响我的while循环。我一定是做错了什么
所以,Timer
对象允许我做的是传递一个函数参数,这样当计时器结束时,它调用该函数,over()
。由于over()
返回False
,因此它不会直接实时影响while循环。我是否需要一个回调来隐式强制,而为false,或者我的停止方法完全错误且无法工作。更改
- 当计时器过期时,您需要更改状态,以便在调用
over
时,它将返回True
。现在,为了简单起见,我将其保持在全局状态。你会希望在某个时候改变这一点
- 此外,while循环条件中存在逻辑错误。我们需要确保它仍然有运行并且没有结束
这将在2秒过期后返回以下内容:
...
start looping
returned = False
start looping
returned = False
start looping
returned = False
Setting globalIsOver = True
start looping
returned = True
Exited run function.
...
start looping
returned = False
start looping
returned = False
start looping
returned = False
Setting globalIsOver = True
start looping
returned = True
Exited run function.