Python的垃圾收集器会损害我的应用程序吗?

时间:2012-05-01 23:20:44

标签: python multithreading reference garbage-collection

在Python中,当我没有使用threading.Thread(target=worker_method)创建的线程的引用时,它是不是很糟糕?垃圾收集器有可能对它做任何事情,这会影响我的应用程序的稳定性吗?

1 个答案:

答案 0 :(得分:1)

线程将继续运行,但缺点是你没有线程的句柄,以便与它进行通信。

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

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线程对象,它也会继续运行。但你真的应该跟踪你开始的线程,以确保它们完成或监视它们是否还活着。而且,如果需要的话,要干净利落地关闭它们。