- RAII
- python内存管理
- __del__
- GIL
RAII
RAII 是一个资源管理工具,约束在代码执行走出特定作用域之后,不管是正常流程,还是异常流程,都不会漏掉资源的释放,可以极大简化代码编写(不用每个分支都增加资源释放逻辑)和资源管理。多数情况下,都应该尽早释放资源,而不应该依赖垃圾收集不可控的生命周期,比如文件描述符、数据库连接。RAII可以严格绑定资源的有效期与变量的生命周期。
- python 在 RAII 对应的工具是 with 语句,和 try.. catch 语句中的 finally 子句。
- go 里面可以用 defer
python with 语句实现RAII
- Python 的 with 語法使用教學:Context Manager 資源管理器(简单直接,清晰易懂)
- PEP 343 -- The "with" Statement(重点看Specification: The 'with' Statement 和 Examples)
python内存管理
python内存管理采用的是引用计数机制为主,大部分的内存资源可以做到立即释放。针对存在循环引用的情况,需要通过GC来做内存回收(引用计数不算在GC里面)。python的GC很简单,主要是标记-清除和分代收集,具体标记-清除和分代收集细节见