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

标签 python multithreading reference garbage-collection

当我没有使用 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/

相关文章:

Java 线程池,如何使用 shutdownNow() 立即停止长时间运行的线程?

php - 在PHP中以并行/多线程方式执行文件

javascript - Firefox 开发工具 + Chrome 调试器控制台 JavaScript 对象引用的错误显示

c++ - 使用 'new' 时,通过引用返回指针或通过指针本身返回指针有什么区别?

python - 管道:多个分类器?

python - 如何在 numpy 中向量化这个循环差异?

objective-c - @synchronized 与 NSLock 实例与 pthread_mutex_t

c++:从类型为 'const int*&' 的表达式对类型为 'int*' 的引用的初始化无效

python - 打印家庭表情符号,使用 U+200D 零宽度连接符,直接打印,对比通过列表

python - Pandas Dataframe 的复杂子集