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種程式語言...