Jer*_*ryK 20 python multithreading interpreter locking
Python 3.2 ALPHA 已经发布.
从更改日志中,看起来GIL已完全重写.
几个问题:
更新:
我对Python很新.所以这一切对我来说都是新的,但至少我明白用CPython存在GIL是一件大事.
问题但是,为什么CPython不仅像Perl那样克隆解释器而试图消除对GIL的需求?
phk*_*ler 25
我已经看到GIL糟透了的最佳解释是:
http://www.dabeaz.com/python/GIL.pdf
同一个人在这里有关于新GIL的演示:
http://www.dabeaz.com/python/NewGIL.pdf
如果这就完成了它仍然很糟糕 - 只是没那么糟糕.多线程会表现得更好.使用单个python应用程序,多核仍然无法为您做任何事情.
有GIL好还是坏?(以及为什么).
既不 - 或两者兼而有之.线程同步是必要的.
新的GIL更好吗?如果是这样,怎么样?
你有没有运行任何基准测试?如果没有,那么也许您应该(1)运行基准,(2)在问题中发布基准,(3)询问有关基准结果的具体问题.
用模糊的,手工的方式讨论GIL在很大程度上是浪费时间.
但是,在您的基准测试的特定环境中讨论GIL可以为您的性能问题提供解决方案.
问题但是,为什么CPython不仅像Perl那样克隆解释器而试图消除对GIL的需求?
阅读本文:http://perldoc.perl.org/perlthrtut.html
首先,Perl根本不支持线程.较旧的Perl解释器有一个无法正常工作的错误模块.
其次,较新的Perl解释器具有此功能.
Perl ithreads和旧的5.005样式线程之间的最大区别,或者对于大多数其他线程系统而言,默认情况下,没有共享数据.创建新的Perl线程时,与当前线程关联的所有数据都将复制到新线程,并随后专用于该新线程!
由于Perl(仅共享特定数据)模型不同于Python(所有数据共享)模型,因此复制Perl解释器将从根本上破坏Python的线程.Perl线程模型根本不同.