Stackless Python,是Python程式語言的一個增強版本,它使程式設計師從基於執行緒的編程方式中獲得好處,並避免傳統執行緒所帶來的性能與複雜度問題。
基本介紹
- 中文名:Stackless Python
- 隸屬:Python編程
- 類型:程式語言
- 優點:易用
Stackless為 Python帶來的微執行緒擴展,是一種低開銷、輕量級的便利工具,如果使用得當,可以獲益如下:
(1)改進程式結構
(2)增進代碼可讀性
(3)提高編程人員生產力
以上是Stackless Python很簡明的釋義,但其對我們意義何在?——就在於Stackless提供的並發建模工具,比目前其它大多數傳統程式語言所提供的工具都更加易用: 不僅用於Python自身,也包括Java、C++,以及其它語言。儘管還有其他一些語言提供並發特性,可它們要么是主要用於學術研究的(如 Mozart/Oz),要么是極少使用、或用於特殊目的的專業語言(如Erlang)。而使用stackless,你將會在Python本身的所有優勢之外,在一個(但願)你已經非常熟悉的環境中,額外獲得並發的特性。
這自然引出了個問題:為什麼要並發?
現實世界就是並發的
現實世界就是“並發”的,它是由一群事物(或“演員”)所組成,而這些事物以一種對彼此所知有限的、散耦合的方式相互作用。傳說中面向對象編程有一個好處,就是對象能夠對現實的世界進行模擬。這在一定程度上是正確的,面向對象編程很好地模擬了對象個體,但對於這些對象個體之間的互動,卻無法以一種理想的方式來表現。例如,如下代碼實例,有什麼問題?
def familyTacoNight():
husband.eat(dinner)
wife.eat(dinner)
son.eat(dinner)
daughter.eat(dinner)
第一印象,沒問題。但是,上例中存在一個微妙的安排:所有事件是次序發生的,即:直到丈夫吃完飯,妻子才開始吃;兒子則一直等到母親吃完才吃;而女兒則是最後一個。在現實世界中,哪怕是丈夫還堵車在路上,妻子、兒子和女兒仍然可以該吃就吃,而要在上例中的話,他們只能餓死了——甚至更糟:永遠沒有人會知道這件事,因為他們永遠不會有機會拋出一個異常來通知這個世界!
並發可能是下一個重要的編程範式
我個人相信,並發將是軟體世界裡的下一個重要範式。隨著程式變得更加複雜和耗費資源,我們已經不能指望摩爾定律來每年給我們提供更快的CPU了,當前,日常使用的個人計算機的性能提升來自於多核與多CPU機制。一旦單個CPU的性能達到極限,軟體開發者們將不得不轉向分散式模型,靠多台計算機的互相協作來建立強大的套用(想想GooglePlex)。為了利用多核計算機和分散式編程的優勢,並發將很快成為做事方式(編程)的事實標準。