gpt4 book ai didi

python - 当您丢失对 Python 线程的所有引用时会发生什么?

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:00 24 4
gpt4 key购买 nike

长话短说...当所有对 threading.Thread 对象的引用都丢失时会发生什么,例如在这个函数中:

def myfunc():
def thread_func():
while True:
do_useful_things()
thethread = threading.Thread(target = thread_func)
thethread.run()
return

看起来线程一直在运行,但它的行为很奇怪,我想知道是否会因为垃圾收集器不正确地删除它或其他原因而发生奇怪的事情。

或者即使生成线程本身没有主动跟踪它们(我知道 threading 本身有获取事件线程的方法),线程是否继续正常运行?

最佳答案

我不是线程方面的专家,但据我所知,如果您对其调用 thethread.run,它会在当前线程中执行(执行的主线程因此会阻塞执行) 然后死去。在这种情况下,它将在函数结束后作为该函数内部的局部变量进行垃圾回收。

相反,如果您使用 thethread.start(),它会被发送到它自己执行的单独线程。在这种情况下,there's a mapping在始终保留对它的引用的 threading 模块中:

_active = {}    # maps thread id to Thread object

因此,在那种情况下,总是至少有一个对您创建的线程的引用。这最终会在执行工作后被删除。

关于python - 当您丢失对 Python 线程的所有引用时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41079713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com