Python 廖雪峰 c15 io非同步

2021-08-14 14:45:40 字數 478 閱讀 5772

io非同步

之前提到過多執行緒和多程序的問題,實際上多執行緒和多程序是針對併發問題,只是解決io速度和cpu速度存在數量級差距的乙個方法,io非同步就是另一種解決問題的思路。

io非同步的優勢我認為有這麼幾個:1,多程序和執行緒之間的切換也要消耗資源;2,可能實際上並沒有那麼多的程序和執行緒可供切換。

實現io非同步的叫做訊息模型,原理是:通過不斷的迴圈乙個程式,監聽訊息。有訊息則執行,並且忽略是否執行完直接進入下一次迴圈

1 協程

一般的程式呼叫函式(子程式),使用棧結構。後呼叫的函式執行完,才能返回上一層執行之前乙個函式。

協程區別於子程式,在執行a的過程中可以臨時中斷,然後直接去執行b。不同於多執行緒,協程全程只有乙個執行緒,切換功能通過程式本身實現。因為只有乙個執行緒,所以也就沒有鎖。

python使用生成器來實現這種功能。大概過程是:乙個函式呼叫乙個生成器,之後開始執行生成器。

(此處儲存了乙個關於生成器和協程的文章,在收藏夾中)

廖雪峰python自學1

這一章主要講了位置引數,預設引數等。在python中定義函式,可以用必選引數 預設引數 可變引數 關鍵字引數和命名關鍵字引數,這5種引數都可以組合使用。但是請注意,引數定義的順序必須是 必選引數 預設引數 可變引數 命名關鍵字引數和關鍵字引數。以下函式允許計算兩個數的乘積,請稍加改造,變成可接收乙個...

廖雪峰python教程 Python簡介

python是著名的 龜叔 guido van rossum在1989年聖誕節期間,為了打發無聊的聖誕節而編寫的乙個程式語言。現在,全世界差不多有600多種程式語言,但流行的程式語言也就那麼20來種。如果你聽說過tiobe排行榜,你就能知道程式語言的大致流行程度。這是最近10年最常用的10種程式語言...

廖雪峰python教程 Python簡介

python是著名的 龜叔 guido van rossum在1989年聖誕節期間,為了打發無聊的聖誕節而編寫的乙個程式語言。現在,全世界差不多有600多種程式語言,但流行的程式語言也就那麼20來種。如果你聽說過tiobe排行榜,你就能知道程式語言的大致流行程度。這是最近10年最常用的10種程式語言...