在 Hacker News 上看到的資訊,目前有一位開發者最近實作出PoC版本的CPython multi-threading。
而會這麼說,主要是因為目前的Python在multi-thread方面的發展,還是受限於GIL(global interpreter lock)的影響,所以實際上在執行時,只會有一個thread 在運作。
而會有這樣的設計,也是跟GC(Garbage Collection)有比較大的關係,因為Python的GC是採用reference count的原理,當一個物件不再被任何其它物件所使用時,它就會是可以被回收的。而回收的方式就是透過GIL。
To avoid such problems, the GIL only allows one thread to be running in the interpreter (i.e. to actually be running Python code) at a time; that takes away almost all of the advantage of using threads in any sort of compute-intensive code.
A viable solution for Python concurrency [LWN.net]
不過目前這個設計有機會被改進了,即是社群開發者提供的那個 PoC版本CPython,而主要的改進方向是透過改進GC演算法,更詳細的作法可以直接參考這裡。
相信這功能如果可以進到CPython之後的版本的話,這一定會大幅強化Python的優勢的,等之後看後續的發展了XD