我正在编写超级棒的软件,每隔一分钟我就会创建一个新的线程。该线程将一些数据存储在远程数据库服务器上并结束。创建新线程时,会为该线程分配资源(内存...)。如果我在某个时间没有正确地释放这些资源,我将会遇到问题。
存储数据的线程有时可能意外结束,因为远程服务器无法访问而出现错误。这不是线程将结束的问题,数据将在下一分钟与下一分钟的数据一起存储。
所以我的问题是:python线程是否释放了它们按预期结束时使用的所有资源?他们因为错误而结束时是否释放所有资源?
答案 0 :(得分:1)
Python线程(与多处理进程相对)使用相同的内存块。如果线程向直接或间接从主线程或其他工作者(例如,共享字典或列表)引用的数据结构添加内容,则在线程终止时不会删除该数据。基本上,只要线程写入内存的唯一数据由线程目标函数作用域本地或以下的变量引用,就应该在线程退出后gc运行时清理资源。