Jas*_*ker 11 python garbage-collection unladen-swallow gil
我刚刚看到Unladen Swallow的这一部分文档出现在Hacker News上.基本上,谷歌工程师说他们对删除GIL并不乐观.然而,似乎有关于垃圾收集器的讨论穿插在这个关于GIL的讨论中.有人可以向我解释这种关系吗?
小智 17
真正的短版本是目前python使用引用计数+标记和扫描周期收集器方案来管理内存,针对延迟(而不是吞吐量)进行了优化.
当只有一个变异线程时,这一切都很好,但在多线程系统中,您需要同步修改refcounts的所有时间,否则您可以使值"陷入裂缝",同步原语是相当的在当代硬件上昂贵.
如果refcounts没有经常更改,这不会是一个问题,但几乎你在cpython中执行的每一个操作都会导致refcount在某处更改,因此选项是GIL,通过某种同步进行refcounts(并且几乎把所有时间花在同步上,或者抛弃引用系统以获得某种真正的垃圾收集器.