我让一个函数在循环中不断运行,检查它是否应该启动或取消在函数作用域中定义的计时器。需要在函数中定义计时器,因为回调也在函数中定义。我可以很好地启动计时器,但当它试图取消时,我得到一个错误‘本地变量’计时器‘赋值前引用’。
我尝试在全局作用域中定义计时器及其回调(这是不可取的),但我得到另一个错误“线程只能启动一次”。
import threading
import random
def start():
trigger = random.randint(0,1)
def do_something():
print(trigger)
if trigger == 0:
timer = threading.Timer(2,do_something)
timer.start()
else:
timer.cancel() #: if trigger is 1, I want to cancel the timer
threading.Timer(1,start).start() #: start() is in a loop and is constantly checking trigger's value
start()
我希望根据触发器的值启动或取消相同的计时器。计时器和它的回调应该在函数中定义。
https://stackoverflow.com/questions/56100848
复制相似问题