Stackless Python

✍ dations ◷ 2025-02-26 14:32:32 #并发计算,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)的邮件平台。

相关

  • 奥罗莫语奥罗莫语(Oromoo,又称:阿方奥罗莫语 Afaan Oromoo,旧称盖拉语 Galla)为一种库希特语(Cushitic),属于亚非语系库希特语族,为非洲东北部国家埃塞俄比亚中西部的通行语言。奥罗莫语也使
  • 单独行为单独行为,亦称为一方行为或单方行为,系指依权利主体一方单独之意思表示即可成立之法律行为。
  • blued (macOS)blued是Mac OS X的蓝牙守护进程。此进程由系统启动,而不直接与用户交互。这个守护进程处理服务发现、链接密钥管理,以及接受连入的连接。
  • 尊室澹尊室澹(越南语:Tôn Thất Đạm/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A","HAN NOM B","Ming-Lt-HKSCS-UNI-H","
  • 伯纳德·莱温斯基伯纳德·莱温斯基(英语:Bernard Salomon Lewinsky, 1943年1月10日-)是一位美国医生和摄影师。曾经因为莱温斯基丑闻组织法律辩护基金为自己女儿莫妮卡·莱温斯基辩护。1943年
  • 艾瑞伯特·海姆纳粹集中营转移营比利时:布伦东克堡垒 · 梅赫伦转移营法国:居尔集中营 · 德朗西集中营意大利:波尔查诺转移营荷兰:阿默斯福特集中营 · 韦斯特博克转移营挪威:法斯塔德集中营部
  • tvOStvOS 是苹果公司 在2015年9月9日公布,专门给Apple TV设计的操作系统。 同年10月29日,预载tvOS的第四代Apple TV接受预订。 它有个别的商店,与App Store (iOS/iPadOS)有别。
  • 梅西塔 (科罗拉多州)梅西塔(英语:Mesita)是位于美国科罗拉多州科斯蒂亚县的一个非建制地区。该地的面积和人口皆未知。梅西塔的座标为37°05′52″N 105°36′08″W / 37.09778°N 105.60222°W /
  • 穆萨巴尼穆萨巴尼(Musabani),是印度贾坎德邦Purbi Singhbhum县的一个城镇。总人口33892(2001年)。该地2001年总人口33892人,其中男性17691人,女性16201人;0—6岁人口4058人,其中男2052人,女200
  • 大部由美大部由美(日语:大部 由美/おおべ ゆみ ,1975年2月15日-),日本足球运动员,日本国家女子足球队成员。在1991年8月21日,她代表日本国家女子足球队出赛,在对战中国的比赛中首次​​亮相。