列出所有活动的 multithreading.Timer 个对象

List all active multithreading.Timer objects

有没有办法在退出前获取所有活动的列表threading.Timer objects in order to cancel?否则程序会挂起等待它们完成。

我可以保留它们的列表,但是当它们发射时我也必须删除它们。相反,我想知道是否有办法获得所有这些。

如果你只需要在退出程序时取消定时器,你可以为定时器设置daemon标志,它们将在退出时被杀死,而不是等待它们完成:

from threading import Timer
timer = Timer(10, fn)
timer.setDaemon(True)
timer.start()

threading.enumerate() returns 将包含 Alive 计时器的列表 - 它们是 threading._Timer.

的实例
>>> t = threading.Timer(30, foo, kwargs = d)
>>> t.start()
>>> t.isAlive()
True
>>> for thing in threading.enumerate():
    if isinstance(thing, threading._Timer):
        thing.cancel()


>>> t.isAlive()
False
>>>