我想检查计时器是否存在,并仅通过第二次运行以下代码来停止它,但是它等待计时器停止并再次运行。
import time
import threading
def run():
print("foobar")
t = threading.Timer(3, run)
def stop_t():
time.sleep(1)
t.cancel()
print("canceled")
if t.is_alive():
t.cancel()
else:
t.start()
问题是,如果您再次运行此代码,则将t变量重新定义为尚未启动的新计时器,您可以尝试这样的事情:
import time
import threading
def run():
print("foobar")
def toggle_timer(t):
if t.is_alive():
print('timer is alive, killing it')
t.cancel()
else:
t.start()
print('timer is dead, starting it')
t = threading.Timer(3, run)
toggle_timer(t)
toggle_timer(t)
输出:
计时器已经死了,开始
计时器还活着,杀死它