1

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

4

1 回答 1

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在启动线程对象后立即删除它,它也会继续运行。但是您确实应该跟踪您启动的线程,以确保它们完成或监视它们是否还活着。而且,如果需要的话,可以干净地关闭它们。

于 2012-05-02T01:23:02.007 回答