我剛剛看到this section of Unladen Swallow's documentation出現在黑客新聞。基本上,Google的工程師表示他們對移除GIL並不樂觀。然而,似乎有關於垃圾收集器穿插在這個關於GIL的討論中的討論。有人可以解釋與我的關係嗎?Python的GIL與垃圾收集器有什麼關係?
11
A
回答
17
真的很短的版本是,目前python管理內存與引用計數+標記&掃描週期收集器方案,優化的延遲(而不是吞吐量)。
當只有一個變異線程時,這很好,但在多線程系統中,您需要同步所有次修改refcounts,否則可以使值「陷入裂縫」,並且同步原語在當代硬件上相當昂貴。
如果refcounts沒有經常改變,這不會是一個問題,但幾乎每一個你在cpython中做的操作都可能導致refcount在某個地方改變,所以這些選項是GIL,對某些地方做refcounts同步的種類(並且幾乎將所有時間花費在同步上),或者爲某種真正的垃圾收集器拋棄引用系統。
1
吞拿魚的答案基本上涵蓋了它。如果您想了解更多的細節,有一個關於如何GIL可以在不必太多對基準的影響計數這裏被刪除的討論:http://mail.python.org/pipermail/python-ideas/2009-October/006264.html
+0
該鏈接的建議很天真。使用比較和交換參考計數太慢。 – 2009-12-16 14:13:25
1
我剛剛發現的另一種觀點認爲對這個問題在這裏:http://renesd.blogspot.com/2009/12/python-gil-unladen-swallow-reference.html
相關問題
- 1. 什麼是垃圾收集器?
- 2. 什麼觸發java垃圾收集器
- 3. 爲什麼python沒有垃圾收集器線程?
- 4. 垃圾收集器
- 5. 的Python:垃圾收集
- 6. 關於垃圾收集器的查詢
- 7. Python垃圾收集器的問題?
- 8. 垃圾收集關閉規則與Javascript
- 9. Node.js的垃圾收集器
- 10. 有沒有垃圾收集器的JVM?
- 11. Java:什麼是垃圾收集器收集?
- 12. 垃圾收集器在收集死對象時會做什麼?
- 13. 有效的垃圾收集
- 14. 垃圾收集
- 15. Python + Numpy:什麼時候手動收集垃圾有用?
- 16. 爲什麼這是垃圾收集
- 17. 什麼觸發垃圾收集
- 18. 爲什麼FastBitmap無法收集垃圾?
- 19. Renderscript和垃圾收集器
- 20. 垃圾收集器閃存
- 21. 垃圾收集器asp.net
- 22. 垃圾收集器vs池
- 23. .NET垃圾收集器
- 24. 垃圾收集器Flash Player
- 25. Jruby,垃圾收集器,Redis
- 26. SpiderMonkey垃圾收集器
- 27. 爲什麼AS3垃圾收集器沒有選擇這個?
- 28. 爲什麼Ada沒有垃圾收集器?
- 29. 垃圾收集器和ARC之間有什麼區別?
- 30. 我怎樣才能看到垃圾收集器中有什麼
那麼,閱讀關於GIL。 http://wiki.python.org/moin/GlobalInterpreterLock正如你所看到的,這都是關於內存管理的。 – 2009-12-16 14:17:57