Python 获取对线程的引用我忘记为其保留引用

Python 获取对线程的引用我忘记为其保留引用,python,python-2.7,Python,Python 2.7,在Python中,如果我执行类似于此线程中的答案的操作: 例如: 我知道每10秒我启动一个新的计时器线程,它将等待时间,然后创建一个新的计时器,等等,它将无限期运行 显然,dir的输出中没有任何内容,因为我没有给它指定名称 是否有任何方法可以获取对此计时器的引用,例如取消它?或者,阻止它的唯一方法是从一开始就引用它 我知道这是一个非常糟糕的实践,但它证明了我更一般的问题。计时器是一个线程子类,与所有线程一样,它们显示在枚举中。您不一定知道哪一个是计时器,但可以使用threading.enumer

在Python中,如果我执行类似于此线程中的答案的操作:

例如:

我知道每10秒我启动一个新的计时器线程,它将等待时间,然后创建一个新的计时器,等等,它将无限期运行

显然,dir的输出中没有任何内容,因为我没有给它指定名称

是否有任何方法可以获取对此计时器的引用,例如取消它?或者,阻止它的唯一方法是从一开始就引用它

我知道这是一个非常糟糕的实践,但它证明了我更一般的问题。

计时器是一个线程子类,与所有线程一样,它们显示在枚举中。您不一定知道哪一个是计时器,但可以使用threading.enumerate获得所有正在运行的线程的列表

如果您只想取消所有未完成的计时器,可以执行以下操作:

for thread in threading.enumerate():
    if isinstance(thread, threading._Timer):  # In Py2.7 at least, Timer is a function wrapping the class _Timer
        thread.cancel()
显然,如果您的代码只是众多库中的一个库,这将是不道德的,因为它将取消在其他地方生成的计时器;不是板球

for thread in threading.enumerate():
    if isinstance(thread, threading._Timer):  # In Py2.7 at least, Timer is a function wrapping the class _Timer
        thread.cancel()