使用倒计时跳出while循环Python

使用倒计时跳出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

我将直接进入代码向您展示,我正在尝试在计时器结束时停止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)
    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.