当我没有使用 threading.Thread(target=worker_method)
创建的线程的引用时,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/