日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python twisted教程_Python Twisted系列教程1:Twisted理论基础

發布時間:2025/3/15 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python twisted教程_Python Twisted系列教程1:Twisted理论基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

最近有人在Twisted郵件列表中提出諸如”為任務緊急的人提供一份Twisted介紹”的的需求。值得提前透露的是,這個序列并不會如他們所愿.尤其是介紹Twisted框架和基于Python?的異步編程而言,可能短時間無法講清楚。因此,如果你時間緊急,這恐怕不是你想找的資料。

我相信如果對異步編程模型一無所知,快速的介紹同樣無法讓你對其有所理解,至少你得稍微懂點基礎知識吧。我已經用Twisted框架幾年了,因此思考過我當初是怎么學習它(學得很慢)并發現學習它的最大難度并不在Twisted本身,而在于對其模型的理解,只有理解了這個模型,你才能更好去寫和理解異步程序的代碼。大部分Twisted的代碼寫得很清晰,其在線文檔也非常棒(至少在開源軟件這個層次上可以這么說)。但如果不理解這個模型,不管是讀Twisted源碼還是使用Twisted的代碼更或者是相關文檔,你都會感到非常的傷腦筋。

因此,我會用前面幾個部分來介紹這個模型以讓你掌握它的機制,稍后會介紹一下Twisted的特點。實際上,一開始,我們并不會使用Twisted,相反,會使用簡單的Python來說明一個異步模型是如何工作的。我們在初次學習Twisted的時,會從你平常都不會直接使用的底層的實現講起。Twisted是一個高度抽象的體系,因此在使用它時,你會體會到其多層次性。但當你去學習尤其是嘗試著理解它是如何工作時,這種為抽像而帶來的多層次性會給你帶來極大的理解難度。所以,我們準備來個從內到外,從低層開始學習它。

模型:

為了更好的理解異步編程模型的特點,我們來回顧一下兩個大家都熟悉的模型。在闡述過程中,我們假設一個包含三個相互獨立任務的程序。在此,除了規定這些任務都要完成自己工作外,我們先不作具體的解釋,后面我們會慢慢具體了解它們。請注意:在此我用“任務”這個詞,這意味著它需要完成一些事情。

第一個模型是單線程的同步模型,如圖1所示:

圖1?同步模型

這是最簡單的編程方式。在一個時刻,只能有一個任務在執行,并且前一個任務結束后一個任務才能開始。如果任務都能按照事先規定好的順序執行,最后一個任務的完成意味著前面所有的任務都已無任何差錯地完成并輸出其可用的結果—這是多么簡單的邏輯。

下面我們來呈現第二個模型,如圖2所示:

圖2?線程模型

在這個模型中,每個任務都在單獨的線程中完成。這些線程都是由操作系統來管理,若在多處理機、多核處理機的系統中可能會相互獨立的運行,若在單處理機上,則會交錯運行。關鍵點在于,在線程模式中,具體哪個任務執行由操作系統來處理。但編程人員則只需簡單地認為:它們的指令流是相互獨立且可以并行執行。雖然,從圖示看起來很簡單,實際上多線程編程是很麻煩的,你想啊,任務之間的要通信就要是線程之間的通信。線程間的通信那不是一般的復雜。什么郵箱、通道、共享內存、、、 唉!

一些程序用多處理機而不是多線程來實現并行運算。雖然具體的編程細節是不同的,但對于我們要研究的模型來說是一樣的。

下面我們來介紹一下異步編程模型,如圖3所示

圖3?異步模型

在這個模型中,任務是交錯完成,值得注意的是:這是在單線程的控制下。這要比多線程模型簡單多了,因為編程人員總可以認為只有一個任務在執行,而其它的在停止狀態。雖然在單處理機系統中,線程也是像圖3那樣交替進行。但作為程序員在使用多線程時,仍然需要使用圖2而不是圖3的來思考問題,以防止程序在挪到多處理機的系統上無法正常運行(考慮到兼容性)。間單線程的異步程序不管是在單處理機還是在多處理機上都 能很好的運行。

在異步編程模型與多線程模型之間還有一個不同:在多線程程序中,對于停止某個線程啟動另外一個線程,其決定權并不在程序員手里而在操作系統那里,因此,程序員在編寫程序過程中必須要假設在任何時候一個線程都有可能被停止而啟動另外一個線程。相反,在異步模型中,一個任務要想運行必須顯式放棄當前運行的任務的控制權。這也是相比多線程模型來說,最簡潔的地方。

值得注意的是:將異步編程模型與同步模型混合在同一個系統中是可以的。但在介紹中的絕大多數時候,我們只研究在單個線程中的異步編程模型。

動機

我們已經看到異步編程模型之所以比多線程模型簡單在于其單令流與顯式地放棄對任務的控制權而不是被操作系統隨機地停止。但是異步模型要比同步模型復雜得多。程序員必須將任務組織成序列來交替的小步完成。因此,若其中一個任務用到另外一個任務的輸出,則依賴的任務(即接收輸出的任務)需要被設計成為要接收系列比特或分片而不是一下全部接收。由于沒有實質上的并行,從我們的圖中可以看出,一個異步程序會花費一個同步程序所需要的時間,可能會由于異步程序的性能問題而花費更長的時間。

因此,就要問了,為什么還要使用異步模型呢? 在這兒,我們至少有兩個原因。首先,如果有一到兩個任務需要完成面向人的接口,如果交替執行這些任務,系統在保持對用戶響應的同時在后臺執行其它的任務。因此,雖然后臺的任務可能不會運行的更快,但這樣的系統可能會歡迎的多。

然而,有一種情況下,異步模型的性能會高于同步模型,有時甚至會非常突出,即在比較短的時間內完成所有的任務。這種情況就是任務被強行等待或阻塞,如圖4所示:

圖4?同步模型中出現阻塞

在圖4中,灰色的部分代表這段時間某個任務被阻塞。為什么要阻塞一個任務呢?最直接的原因就是等待I/O的完成:傳輸數據或來自某個外部設備。一個典型的CPU處理數據的能力是硬盤或網絡的幾個數量級的倍數。因此,一個需要進行大I/O操作的同步程序需要花費大量的時間等待硬盤或網絡將數據準備好。正是由于這個原因,同步程序也被稱作為阻塞程序。

從圖4中可以看出,一個可阻塞的程序,看起來與圖3描述的異步程序有點像。這不是個巧合。異步程序背后的最主要的特點就在于,當出現一個任務像在同步程序一樣出現阻塞時,會讓其它可以執行的任務繼續執行,而不會像同步程序中那樣全部阻塞掉。因此一個異步程序只有在沒有任務可執行時才會出現“阻塞”,這也是為什么異步程序被稱為非阻塞程序的原因。

任務之間的切換要不是此任務完成,要不就是它被阻塞。由于大量任務可能會被阻塞,異步程序等待的時間少于同步程序而將這些時間用于其它實時工作的處理(如與人打交道的接口),這樣一來,前者的性能必然要高很多。

與同步模型相比,異步模型的優勢在如下情況下會得到發揮:

1.有大量的任務,因此在一個時刻至少有一個任務要運行

2.任務執行大量的I/O操作,這樣同步模型就會在因為任務阻塞而浪費大量的時間

3.任務之間相互獨立,以至于任務內部的交互很少。

這些條件大多在CS模式中的網絡比較繁忙服務器端出現(如WEB服務器)。每個任務代表一個客戶端進行接收請求并回復的I/O操作。客戶的請求(相當于讀操作)都是相互獨立的。因此一個網絡服務是異步模型的典型代表,這也是為什么twisted是第一個也是最棒的網絡庫。

總結

以上是生活随笔為你收集整理的python twisted教程_Python Twisted系列教程1:Twisted理论基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人影视久久 | 天天干夜夜爽 | 97久久久久久久久久 | 男女羞羞在线观看 | 欧美在线专区 | 日韩欧美成人免费视频 | 国产一区a | 国产精品7777 | 久久永久免费视频 | 在线免费观看一区二区三区 | av一区二区免费 | 欧美激情爱爱 | 精人妻无码一区二区三区 | 日韩精品美女 | 亚洲男人天堂 | 欧美一级做| 欧美大片一区二区三区 | 国产精品国产三级国产专区51区 | 欧美蜜桃视频 | 国产剧情av在线播放 | 中文字幕乱码免费 | 欧美第十页 | 日韩h视频 | 视频一区二区欧美 | www.com色| 国产思思99re99在线观看 | 波多野结衣视频一区 | 久久综合久久久久 | 午夜av福利 | 日日摸日日操 | 亚洲美女免费视频 | 婷婷国产 | 黄网站色| 久久久久亚洲av无码专区首jn | 成年人午夜 | 午夜伦理影院 | 国产精品高潮呻吟久久av野狼 | 性生交大片免费看 | av视| 久久精品国产亚洲av蜜臀色欲 | jav中文字幕 | 日韩久久网| 久久网站免费观看 | 国产美女主播在线观看 | 欧美激情一区二区视频 | 亚洲乱熟女一区二区 | 永久免费无码av网站在线观看 | 刘亦菲一区二区三区免费看 | 国产自产精品 | 久青草资源福利视频 | 特级a毛片| 免费三级黄 | 日本丰满少妇做爰爽爽 | 欧美高清性xxxxhd | 亚洲国产精选 | 色噜噜狠狠一区二区三区 | 久久久中文 | 综合久久色 | 97免费人妻无码视频 | 孕妇爱爱视频 | 北条麻妃一区二区三区在线观看 | 国内自拍偷拍网 | 能在线观看的av网站 | 麻豆国产精品 | 国产99久久九九精品无码 | 伊人影院久久 | 鲁鲁在线 | 亚洲1024| 日韩av中文字幕在线免费观看 | 一区视频 | 1000部啪啪未满十八勿入 | 精品动漫一区二区三区在线观看 | 无码人妻精品一区二区 | 免费在线色视频 | 蜜桃久久久久久久 | 99re视频在线 | 久久r精品 | 葵司在线视频 | 亚洲三级在线视频 | 岛国一区 | 在线观看亚洲av每日更新 | 免费国产网站 | 红色假期黑色婚礼2 | 日韩成人动漫在线观看 | 先锋资源中文字幕 | 日韩av网站在线 | 日批视频免费播放 | 懂色av一区二区三区在线播放 | 久操伊人 | 亚洲欧美日韩一区二区三区四区 | 三级男人添奶爽爽爽视频 | 激情四射网 | 奇米888一区二区三区 | 嫦娥性艳史bd | 欧美天堂 | 重囗味sm一区二区三区 | 免费网站在线观看黄色 | 三浦理惠子av在线播放 | 91高清在线免费观看 |