当我不保存使用以下代码创建的线程的引用时,在Python中是否不好?垃圾收集器是否有可能对其执行任何操作,从而影响了我的应用程序的稳定性?

最佳答案

无论如何,该线程都将继续运行,但缺点是您不再具有该线程的句柄才能与之通信。

一个简单的测试表明,即使线程对象超出范围,它仍在运行:

from threading import Thread
from time import sleep

def t_func():
    print "Sleeping"
    sleep(5)
    print "Done Sleeping"

def test():
    t = Thread(target=t_func)
    t.start()

>>> test()
Sleeping
Done Sleeping


即使您在启动t线程对象后立即删除它,它也会继续运行。但是您确实应该跟踪启动的线程,以确保它们完成或监视它们是否还处于活动状态。并且,如果需要,将它们彻底关闭。

关于python - Python的垃圾收集器会损害我的应用程序吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10405708/

10-12 00:00
查看更多