麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > python三大并發服務器是什么?

python三大并發服務器是什么?

來源:千鋒教育
發布人:xqq
時間: 2023-11-05 18:21:49 1699179709

一、select

select最早于1983年出現在4.2BSD中,它通過一個select()系統調用來監視多個文件描述符的數組,當select()返回后,該數組中就緒的文件描述符便會被內核修改標志位,使得進程可以獲得這些文件描述符從而進行后續的讀寫操作。

select目前幾乎在所有的平臺上支持,其良好跨平臺支持也是它的一個優點,事實上從現在看來,這也是它所剩不多的優點之一。

select的一個缺點在于單個進程能夠監視的文件描述符的數量存在最大限制,在Linux上一般為1024,不過可以通過修改宏定義甚至重新編譯內核的方式提升這一限制。

另外,select()所維護的存儲大量文件描述符的數據結構,隨著文件描述符數量的增大,其復制的開銷也線性增長。同時,由于網絡響應時間的延遲使得大量TCP連接處于非活躍狀態,但調用select()會對所有socket進行一次線性掃描,所以這也浪費了一定的開銷。

原理:

在python中,select函數是一個對底層操作系統的直接訪問的接口。它用來監控sockets、files和pipes,等待IO完成(WaitingforI/Ocompletion)。當有可讀、可寫或是異常事件產生時,select可以很容易的監控到。

select.select(rlist,wlist,xlist[,timeout])傳遞三個參數,一個為輸入而觀察的文件對象列表,一個為輸出而觀察的文件對象列表和一個觀察錯誤異常的文件列表。第四個是一個可選參數,表示超時秒數。其返回3個tuple,每個tuple都是一個準備好的對象列表,它和前邊的參數是一樣的順序。下面,主要結合代碼,簡單說說select的使用。

程序過程:

1、該程序主要是利用socket進行通信,接收客戶端發送過來的數據,然后再發還給客戶端。

2、首先建立一個TCP/IPsocket,并將其設為非阻塞,然后進行bind和listen。

3、通過select函數獲取到三種文件列表,分別對每個列表的每個元素進行輪詢,對不同socket進行不同的處理,最外層循環直到inputs列表為空為止

4、當設置timeout參數時,如果發生了超時,select函數會返回三個空列表。

二、poll

poll在1986年誕生于SystemVRelease3,它和select在本質上沒有多大差別,但是poll沒有最大文件描述符數量的限制。

poll和select同樣存在一個缺點就是,包含大量文件描述符的數組被整體復制于用戶態和內核的地址空間之間,而不論這些文件描述符是否就緒,它的開銷隨著文件描述符數量的增加而線性增大。

另外,select()和poll()將就緒的文件描述符告訴進程后,如果進程沒有對其進行IO操作,那么下次調用select()和poll()的時候將再次報告這些文件描述符,所以它們一般不會丟失就緒的消息,這種方式稱為水平觸發(LevelTriggered)。

三、epoll

直到Linux2.6才出現了由內核直接支持的實現方法,那就是epoll,它幾乎具備了之前所說的一切優點,被公認為Linux2.6下性能最好的多路I/O就緒通知方法。

epoll可以同時支持水平觸發和邊緣觸發(EdgeTriggered,只告訴進程哪些文件描述符剛剛變為就緒狀態,它只說一遍,如果我們沒有采取行動,那么它將不會再次告知,這種方式稱為邊緣觸發),理論上邊緣觸發的性能要更高一些,但是代碼實現相當復雜。

epoll同樣只告知那些就緒的文件描述符,而且當我們調用epoll_wait()獲得就緒文件描述符時,返回的不是實際的描述符,而是一個代表就緒描述符數量的值,你只需要去epoll指定的一個數組中依次取得相應數量的文件描述符即可,這里也使用了內存映射(mmap)技術,這樣便徹底省掉了這些文件描述符在系統調用時復制的開銷。

另一個本質的改進在于epoll采用基于事件的就緒通知方式。在select/poll中,進程只有在調用一定的方法后,內核才對所有監視的文件描述符進行掃描,而epoll事先通過epoll_ctl()來注冊一個文件描述符,一旦基于某個文件描述符就緒時,內核會采用類似callback的回調機制,迅速激活這個文件描述符,當進程調用epoll_wait()時便得到通知。

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 久久国内精品自在自线软件| 91蜜桃在线观看| 波多野结衣最新电影| 啊灬啊灬用力灬再用力岳| 日韩1234| 低头看我是怎么c哭你的| 免费91麻豆精品国产自产在线观看| 韩日欧美| 亚洲最大色视频| 天天干夜夜操| 99在线精品视频在线观看| 亚洲精品在线观看视频| 日韩三级网址| 免费一级乱子伦片| 91精品国产高清久久久久| 67194在线看片| 天天做天天爱夜夜爽毛片毛片 | 国产999在线观看| 1000部又爽又黄无遮挡的视频| 五月深爱网| 印度爱经hd在线观看| 久久浮力影院| 麻豆视频传媒二区| 中文字幕按摩| 2021日本三级理论影院| 男女无遮挡猛进猛出免费观看视频| 公和我做好爽添厨房| 亚洲午夜一区二区三区| 日本h片无遮挡在线观看| 国产亚洲精品一品区99热| 亚洲免费视频观看| 最近的中文字幕视频完整| 欧美午夜成年片在线观看| 桃子视频在线观看高清免费视频| 美女扒开胸露出奶乳免费视频| 四虎国产精品免费久久影院| aaaaa毛片| 天天躁日日躁狠狠躁| 成人毛片全部免费观看| 中文亚洲日韩欧美| 久久天天躁日日躁狠狠躁|