如果没有调用thread.stop()或thread.join()方法,python中的线程何时死亡?

如果没有调用thread.stop()或thread.join()方法,python中的线程何时死亡?,python,python-3.x,multithreading,Python,Python 3.x,Multithreading,下面是一段代码: def display(): threading.Timer(1,display).start() print("Number") display() 对于这段代码,我想问以下问题: 每一秒都会产生新的线程,对吗 每秒最后一个线程都会死掉,因为函数完全执行,所以旧线程也会死掉,对吗?如果没有,那么发生了什么 Timer源于Thread,因此是的:许多线程被启动 无论您是否调用join,当线程调用的函数返回(或抛出)时,线程都会死亡,但是为它们保留的资源可能会被回收,也

下面是一段代码:

def display():
  threading.Timer(1,display).start()
  print("Number")
display()
对于这段代码,我想问以下问题:

  • 每一秒都会产生新的线程,对吗
  • 每秒最后一个线程都会死掉,因为函数完全执行,所以旧线程也会死掉,对吗?如果没有,那么发生了什么
  • Timer
    源于
    Thread
    ,因此是的:许多线程被启动
  • 无论您是否调用
    join
    ,当线程调用的函数返回(或抛出)时,线程都会死亡,但是为它们保留的资源可能会被回收,也可能不会被回收,除非您这样做。(请注意,线程是公共垃圾收集方案中的根,因此依赖于删除对
    Thread
    对象的引用是不明智的。)

  • 因此,如果我不加入他们,我可能会耗尽资源?@S.Chirag:至少在某些实现中是这样。我认为CPython在这种情况下不会泄漏,但通常很容易
    连接
    每个线程。在这里,您只需存储上一个
    计时器
    ,并在启动下一个计时器后加入它。