Loading AI tools
来自维基百科,自由的百科全书
Stackless Python或稱簡稱Stackless,是一個Python程式語言解釋器,這麼稱呼的原因是它避免了依賴C調用棧為自己的堆疊。在實際中,Stackless Python使用了C堆疊,但是這個堆疊在函數調用之間是被清除的[1]。Stackless Python的最突出特徵是微線程,它避免了與作業系統線程有關的大量開銷。在Python特徵之外,Stackless還增加了協程、通信通道和任務序列化。
對於Stackless Python,一個運行的程序被分解成微線程,由語言解釋器自身而非作業系統內核管理,上下文切換和任務調度純粹在解釋器內完成,因而可以被視作是一種形式的綠色線程。微線程管理在同一個CPU核心上一個程序的不同子任務的執行,Stackless Python不移除Python的全局解釋器鎖, 也不使用多線程或多進程。所以它只允許在一個共享CPU核心上的協作式多任務而非並行,最初不能獲得而現在有了某種形式的搶佔[2]。
由於相當數量的原始碼變更,Stackless Python不能在現存的Python安裝上作為一個擴展或庫來安裝。它自身是完整的Python發行。大多數的Stackless Python的特徵也在PyPy中實現了,它是自我寄宿的Python解釋器和JIT編譯器[3]。
儘管整個Stackless Python是一個獨立發行,它的上下文切換功能已經成功的打包為叫做greenlet的CPython擴展[4]。它被用在很多庫,比如gevent[5],用來提供CPython的綠色線程解決方案。Python現在已經接受了對綠色線程的原生解決方案:async/await。
Stackless Python廣泛的使用在大規模多玩家在線遊戲Eve Online的實現和IronPort的郵件平台。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.