Stackless Python

✍ dations ◷ 2025-11-16 07:32:36 #并发计算,Python

Stackless Python或称简称Stackless,是一个Python编程语言解释器,这么称呼的原因是它避免了依赖C调用栈为自己的堆栈。在实际中,Stackless Python使用了C堆栈,但是这个堆栈在函数调用之间是被清除的。Stackless Python的最突出特征是微线程,它避免了与操作系统线程有关的大量开销。在Python特征之外,Stackless还增加了协程、通信通道和任务序列化。

对于Stackless Python,一个运行的程序被分解成微线程,由语言解释器自身而非操作系统内核管理,上下文切换和任务调度纯粹在解释器内完成,因而可以被视作是一种形式的绿色线程。微线程管理在同一个CPU核心上一个程序的不同子任务的执行,Stackless Python不移除Python的全局解释器锁, 也不使用多线程或多进程。所以它只允许在一个共享CPU核心上的协作式多任务而非并行,最初不能获得而现在有了某种形式的抢占。

由于相当数量的源代码变更,Stackless Python不能在现存的Python安装上作为一个扩展或库来安装。它自身是完整的Python发行。大多数的Stackless Python的特征也在PyPy中实现了,它是自我寄宿(英语:Self-hosting (compilers))的Python解释器和JIT编译器。

尽管整个Stackless Python是一个独立发行,它的上下文切换功能已经成功的打包为叫做greenlet的CPython扩展。它被用在很多库,比如gevent,用来提供CPython的绿色线程解决方案。Python现在已经接受了对绿色线程的原生解决方案:await/async。

Stackless Python广泛的使用在大规模多玩家在线游戏Eve Online(英语:Eve Online)的实现和IronPort(英语:IronPort)的邮件平台。

相关

  • 空间群在数学和物理学中,空间群(space group)是空间中(通常是三维空间)一种形态的空间对称群。在三维空间中有219种不同的类型,或230种不同的手性类型。对超过三维的空间中的空间群也有
  • 发音规则调音方法(英语:Manner of articulation),也称发音方法,在语音学上指发音时舌头、唇部及其他调音器官发出特定语音的方法。此一概念通常使用于子音的产生。对于任一个调音部位,存在
  • 反政府示威活动2011年巴林反政府示威活动为从2011年2月14日开始持续至2011年底发生在巴林的示威活动,为2010-2011年阿拉伯世界的反政府示威的一部分。初期示威者要求政府提供体面的工作和生
  • 灶头灶、炉灶、厨灶或灶头是一种固定的烹饪的设施,透过加热炊具来达到将食物变熟的目的。中文语境中有时也以灶来指窑,例如佛山的南风古灶。早期的灶多是粘土制灶的,用柴火来加热。
  • 土默川平原土默川平原明清时代为蒙古族土默特部居住地而得名,又称前套平原;西起包头市郊区东乌不拉沟口,东至蛮汉山,北靠大青山,南临黄河。总面积约1万平方公里,系由黄河及其支流大黑河冲积
  • 李博乂李博乂(?-671年),唐朝宗室、官员。生年没有记载。为唐高祖李渊之侄子,父李湛(李渊二哥),博乂即李湛第二子。武德元年(618年)受封陇西王。李博乂有妓妾数百人,皆衣罗绮,骄侈无比。与其弟
  • 杨定安杨定安(1902年4月14日-1982年5月8日),男,湖南长沙(板仓)人,中华人民共和国政治人物,曾任燃料工业部技术监察处电业科科长、华东电业管理局生产技术处处长、工程师,第一、二、三届湖南
  • 王奂如王奂如(1907年-1985年),男,直隶(今河北)深泽人,中华人民共和国政治人物,曾任东北人民政府财政部秘书长,吉林省人民委员会副省长。
  • 萨德里萨德里(Sadri),是印度拉贾斯坦邦Pali县的一个城镇。总人口24403(2001年)。该地2001年总人口24403人,其中男性12173人,女性12230人;0—6岁人口4386人,其中男2295人,女2091人;识字率44.98
  • 阿里布尔杜阿尔阿里布尔杜阿尔(Alipurduar)是印度西孟加拉邦的一座城市。