可以通过检查是否存在Python计时器



我想检查计时器是否存在,并仅通过第二次运行以下代码来停止它,但是它等待计时器停止并再次运行。

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)

输出:

计时器已经死了,开始

计时器还活着,杀死它

最新更新