Stackless Python的缺点是什么?

问题:

我最近一直在阅读有关Stackless Python的消息,与vanilla cPython相比,它似乎有很多优点。它具有所有这些酷的功能,如无限递归,微线程,延续等,同时比cPython快(大约10%,如果the Python wiki被相信)and与之兼容(至少版本2.5 ,2.6和3.0)。
所有这些看起来都太好了,不能成真。然而,TANSTAAFL,我对Python社区的Stackless看不起太多的热情,PEP 219从来没有实现。这是为什么? Stackless有什么缺点?什么骨架隐藏在Stackless的壁橱里?
(我知道Stackless不提供真正的并发性,只是一种更简单的并行编程方式,并不会让我感到困扰)

回答:

我不知道Wiki上的“Stackless快10%”,但是从来没有尝试过测量这些性能数字。我不能想到什么Stackless做出了巨大的变化。
Stackless是一个令人惊奇的工具,有几个组织/政治问题。
第一个来自历史。 Christian Tismer在10年前开始谈论最终成为Stackless的消息。他有一个想法,他想要什么,但很难解释他在做什么,为什么人们应该使用它。这部分是因为他的背景没有对协调程序的想法进行CS培训,因为他的演讲和讨论是非常面向实现的,对于不了解如何使用它作为解决方案的人来说,这是很难的他们的问题。
因此,初始文件很差。有一些如何使用它的描述,最好的从第三方贡献者。根据PyCon调查数据,在2007年的PyCon 2007中,我发表了一个关于“Using Stackless”的演讲。 Richard Tew在收集这些内容方面做得非常出色,更新了stackless.com,并在新的Python版本出现时保持了分发。他是CCP Games的雇员,EVE Online的开发人员,它使用Stackless作为其游戏系统的重要组成部分。
CCP游戏也是人们在谈论Stackless时使用的最大的现实世界。 Stackless的主要教程是Grant Olson的“Introduction to Concurrent Programming with Stackless Python”,也是面向游戏的。我认为这给人们一个倾斜的想法,Stackless是面向游戏的,当游戏更容易延续的时候。
另一个困难是源代码。在其原始形式中,它需要对Python的许多部分进行更改,这使得Guido van Rossum,Python的领导者警惕。我想,部分原因是支持call / cc,后来被删除为“太多像支持goto,当有更好的更高级别的形式”。我不知道这个历史,所以只是读这段话,“Stackless用来要求太多的改变”。
后来的版本不需要修改,Tismer继续推出Python。虽然有一些考虑,但官方的立场(据我所知)CPython不仅仅是一个Python实现,而是作为参考实现,它不会包括Stackless功能,因为它不能被Jython实现或Iron Python。
绝对没有“significant changes to the code base”的计划。来自Arafangion的引用和引用超链接(见评论)来自大约2000/2001。结构变化早已完成,正是我上面提到的。现在的堆栈是稳定和成熟的,只是在过去几年中对代码库的微调。
Stackless的最后一个限制 – Stackless没有强大的支持者。 Tismer现在深深地参与了PyPy,这是Python for Python的一个实现。他在PyPy中实现了Stackless功能,并认为它比Stackless本身更优越,并且认为PyPy是未来的方式。 Tew保持Stackless,但他对宣传不感兴趣。我认为是担当这个角色,但看不出我能从中赚取收入。
虽然如果您想在Stackless中进行培训,请随时contact me! 🙂

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What are the drawbacks of Stackless Python?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1 + 4 =