Python多线程。释放资源
我正在写一个超级棒的软件,每分钟都会创建一个新的线程。这个线程会把一些数据存储到远程数据库服务器上,然后结束。当一个新线程被创建时,会分配一些资源(比如内存)给它。如果我没有在某个时候正确释放这些资源,就会出现问题。
存储数据的线程有时会意外结束,比如因为远程服务器无法连接而出错。这没关系,线程会结束,数据会在下一分钟和那一分钟的数据一起存储。
所以我想问的是:在Python中,线程在正常结束时会释放它们使用的所有资源吗?如果因为错误而结束,它们会释放所有资源吗?
1 个回答
1
Python中的线程(和多进程的进程相比)使用的是同一块内存。如果一个线程往一个数据结构里添加了东西,而这个数据结构是主线程或其他工作线程直接或间接引用的(比如一个共享的字典或列表),那么当这个线程结束时,这些数据不会被删除。简单来说,只要你的线程写入内存的数据是由线程目标函数范围内的局部变量引用的,或者更下面的范围引用的,那么在这个线程退出后,下次垃圾回收(gc)运行时,这些资源应该会被清理掉。