2009-12-16 61 views
11

我剛剛看到this section of Unladen Swallow's documentation出現在黑客新聞。基本上,Google的工程師表示他們對移除GIL並不樂觀。然而,似乎有關於垃圾收集器穿插在這個關於GIL的討論中的討論。有人可以解釋與我的關係嗎?Python的GIL與垃圾收集器有什麼關係?

+2

那麼,閱讀關於GIL。 http://wiki.python.org/moin/GlobalInterpreterLock正如你所看到的,這都是關於內存管理的。 – 2009-12-16 14:17:57

回答

17

真的很短的版本是,目前python管理內存與引用計數+標記&掃描週期收集器方案,優化的延遲(而不是吞吐量)。

當只有一個變異線程時,這很好,但在多線程系統中,您需要同步所有次修改refcounts,否則可以使值「陷入裂縫」,並且同步原語在當代硬件上相當昂貴。

如果refcounts沒有經常改變,這不會是一個問題,但幾乎每一個你在cpython中做的操作都可能導致refcount在某個地方改變,所以這些選項是GIL,對某些地方做refcounts同步的種類(並且幾乎將所有時間花費在同步上),或者爲某種真正的垃圾收集器拋棄引用系統。