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

Stackless Python
原作者Christian Tismer
開發者Anselm Kruis
首次发布1998年,​28年前​(1998
当前版本v3.8.1-slp(2021年8月12日,​4年前​(2021-08-12
源代码库 編輯維基數據鏈接
编程语言C, Python
操作系统Linux, Windows
类型解释器
许可协议Python软件基金会许可证
网站github.com/stackless-dev/stackless/wiki 编辑维基数据

设计

编辑

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

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

使用

编辑

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

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

引用

编辑
  1. ^ 存档副本. [2020-09-30]. (原始内容存档于2020-08-29). 
  2. ^ About Stackless. [26 August 2016]. (原始内容存档于2020-06-23). a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively. 
  3. ^ Application-level Stackless features — PyPy documentation. pypy.readthedocs.org. [2020-09-30]. (原始内容存档于2016-04-13). 
  4. ^ greenlet: Lightweight concurrent programming — greenlet 0.4.0 documentation. greenlet.readthedocs.org. [2020-09-30]. (原始内容存档于2016-04-16). 
  5. ^ What is gevent? — gevent 1.3.0.dev0 documentation. www.gevent.org. [2020-12-09]. (原始内容存档于2020-09-16). 

参閱

编辑

外部链接

编辑

📚 Artikel Terkait di Wikipedia

Python

MyHDL(英语:MyHDL):将Python编译成Verilog或VHDL。 其他实现举例:Cinder,它是Meta孵化器发布的面向性能的CPython分叉。Jython,它是用Java实现的Python 2.7。IronPython,它基於DLR之上的Python 2.7和Python 3.4实现。Stackless

PyPy

。PyPy的递归式图标是一个吞噬自己的蛇,因为RPython是用Python解释器转译的。代码还可以不转换的运行来测试和分析,这为动态语言研究提供了很好的试验台。 它允许可插拔的垃圾回收,还有可选的启用Stackless Python特征。最后,它包括了即时编译(JIT)生成器,在解释器源代码中加

MicroPython

MicroPython,是提供Python 3的大部份功能的语言实现,它用C语言编写,被优化于运行在微控制器之上。MicroPython是运行在微控制器硬件之上的完全的Python编译器和运行时系统。提供给用户一个交互式提示符(REPL)来立即执行所支持的命令。除了包括选定的核心Python

Python軟體基金會

Python軟體基金會(英語:Python Software Foundation,簡稱PSF,在中国大陆地区注册软件商标时则冠以皮东软件基金会名义[來源請求])是一個致力於Python程式語言的非營利組織,成立於2001年3月6日。基金會的宗旨在於“推廣、保護並提昇Python

协程

Self Simula 67 Smalltalk Squirrel(英语:Squirrel (programming language)) Stackless Python SuperCollider Tcl(自从8.6) urbiscript(英语:urbiscript) 由于续体可被用来实现协程,支持续体的编程语言也非常容易就支持协程。

PyCon

PyCon(Python Conference)是指一系列专门探讨和推广Python编程语言的会议。起源于美国,但也在其他许多有活跃Python开发者社区的国家举办活动。此外还有一些会议专门对科学家推广SciPy库。 各地的PyCon会议旨在推動和增進Python在当地的使用度和曝光度,以及增進社群的交流。

Limbo語言

http://www.vitanuova.com/inferno/limbo.html 主要實作產品 Dis虚拟机 受影响于 C, Pascal, CSP, Alef(英语:Alef (programming language)), Newsqueak 影響語言 Stackless Python, Go, Rust

Jython

Jython(原JPython),是一个用Java语言写的Python解释器。 Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT