我不知道Wiki上的“ Stackless速度提高10%”来自何处,但是我再也没有尝试过衡量那些性能数字。我想不出Stackless所做的那么大的改变。
Stackless是一个出色的工具,它具有多个组织/政治问题。
首先来自历史。克里斯蒂安·蒂斯默(Christian Tismer)开始谈论大约10年前最终变成Stackless的事情。他对自己想要的东西有所了解,但是很难解释自己在做什么以及人们为什么要使用它。部分原因是他的背景没有接受有关协程等概念的CS培训,并且他的演示和讨论都非常注重实现,这对那些尚未深入研究延续性知识的人来说很难理解如何将其用作解决方案。他们的问题。
因此,最初的文档很差。其中有一些关于如何使用它的描述,其中有来自第三方贡献者的最好的描述。根据PyCon的调查数字,在PyCon 2007上,我发表了有关“ 使用无堆栈 ” 的演讲,该演讲进行得很顺利。理查德·图(Richard Tew)在收集这些内容,更新stackless.com以及在发布新的Python版本时保持发行版方面做得非常出色。他是EVE Online开发商CCP Games的雇员,该公司使用Stackless作为其游戏系统的重要组成部分。
CCP游戏也是人们在谈论Stackless时使用的最大的现实示例。Stackless的主要教程是Grant Olson的“ Stackless Python并发编程简介 ”,它也是面向游戏的。我认为这给人们带来了一个错误的想法,即Stackless是面向游戏的,而更多的是游戏更容易面向延续。
另一个困难是源代码。它的原始形式需要对Python的许多部分进行更改,这使得Python的领导者Guido van Rossum变得警惕。我认为部分原因是因为对call / cc的支持后来被删除,因为它“太像在拥有更好的高级表单时支持goto了”。我不确定这段历史,因此只需将本段读为“ Stackless曾经需要太多更改”。
以后的版本不需要更改,Tismer继续推动将其包含在Python中。尽管有一些考虑,但官方的立场(据我所知)是CPython不仅是Python实现,而且是参考实现,并且不包含Stackless功能,因为Jython无法实现或Iron Python。
绝对没有“ 对代码库进行重大更改 ”的计划。Arafangion的引用和参考超链接(请参阅评论)大约来自2000/2001。结构更改已经完成很长时间了,这就是我上面提到的。现在,无栈是稳定且成熟的,在过去几年中仅对代码库进行了少量调整。
Stackless的最后一个限制-没有强烈的主张Stackless。Tismer现在与PyPy紧密合作,PyPy是用于Python的Python实现。他已经在PyPy中实现了Stackless功能,并认为它比Stackless本身要优越得多,并且认为PyPy是未来的方式。Tew保持Stackless,但他对倡导不感兴趣。我考虑过担任那个角色,但看不到如何从中赚钱。
尽管如果您想在Stackless中进行培训,请随时与我联系!:)