python IO模式(多工和非同步IO深入理解)

來源:互聯網
上載者:User

標籤:串連   模型   同步   com   通知   方式   解決   的區別   核心參數   

1、事件渠道模型。事件渠道為非同步IO的原型。

 

2、IO模式,一次IO調用會經曆兩個階段。一、等待資料階段,將資料從網路或者是磁碟讀取到系統核心(kennel) 二、將資料從核心拷貝到進程中。

基於這兩個階段,linux系統下面產生了五種網路網路模式方案。

-阻塞I/O(blocking IO)

-非阻塞I/O(nobokcing IO)

- I/O多工。(I/O multiplexing)

- 訊號驅動

-非同步I/O(async)

由於訊號驅動使用較少,主要介紹其餘四種模式。

 

3、阻塞I/O(blocking IO)在資料準備階段和貝考資料階段都會阻塞。使用者調用recefrom 以後會一直等待資料拷貝到使用者記憶體未至。

 

2、非阻塞I/O(nobokcing IO),使用者會一直調用recefrom,如果資料沒有準備好。會返回一個ERROR。一直到資料準備好。因此在讀資料階段不會卡住。

 

3、epoll模式,也就是IO多工模式。一次性可以處理多個網路IO。調用select方法。首先會卡住。直到其中一個有資料就會立即返回。然後拷貝資料。然後進入下一個迴圈

4、非同步IO,非同步I/O不會阻塞。當使用者進程發起read操作以後。可以立刻開始做其他的事情(相當於告訴在核心註冊一個事件。由核心進行監控,處理完以後核心主動通知)。而另一方面從kennel角度看當他收到一個async read以後,會立馬回調。所以不會產生任何阻塞。當kennel準備好資料,將資料貝考到使用者記憶體以後,會主動通知使用者,告訴read操作已完成。

 

 

5、總結。

blocking IO 和 nonblocking IO 區別:

  一、調用blocking IO 會一直阻塞,知道read全部完成為止。而 nonblocking IO  在ready會立即返回。相同點在於二者在coy階段都會卡住。

async 和 synch的區別:

   一、二者區別在於拷貝資料階段是否會阻塞。所以上面的blocking IO、nonblocking IO、I/O多工都屬於同步I/0。而async任何階段不會阻塞。

 

6、select poll epoll區別。

select :他通過一個select()系統調用來監控多個檔案描述符的數組。當select()返回以後,該檔案描述符便會被核心修改表示位。使得進程可以獲得檔案描述符。從而進行後續讀寫操作。一、監視的檔案描述符號存在最大數限制。可以通過修改核心參數來解決 2、由於select()會對所有的socket進行一次線性掃描。這也浪費了一定開銷。隨著檔案描述符的增減。掃描時間軸性增加。

poll:去掉了最大檔案數限制。缺點和select一樣。另外如果將就緒的檔案告訴後台進程以後,進程沒有讀取。下次還會繼續掃描。所以一般不會丟失訊息。稱之為水平觸發。

epoll模式。用的最多的一種方式。同時支援水平觸發和邊緣觸發(告訴進程描述符已經準備就緒,他只說一遍。如果程式未採取行動。下次將不會告知,這個叫邊緣觸發)。邊緣觸發較複雜。效能更高。優點:epoll相比於poll在於每次掃描只掃描活躍串連數。節省了開銷。

 

python IO模式(多工和非同步IO深入理解)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.