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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务器select与gevent

發布時間:2024/7/5 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器select与gevent 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

select版-TCP服務器

?

1. select 原理

在多路復用的模型中,比較常用的有select模型和epoll模型。這兩個都是系統接口,由操作系統提供。當然,Python的select模塊進行了更高級的封裝。

將需要判斷有數據傳來的(可讀的)socket、可以向外發送數據的(可寫的)socket及發生異常狀態的socket交給select,select會幫助我們從中遍歷找出有事件發生的socket,并返回給我們,我們可以直接處理這些發生事件的socket。

?

2. 總結

優點

select目前幾乎在所有的平臺上支持,其良好跨平臺支持也是它的一個優點。

?

缺點

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

一般來說這個數目和系統內存關系很大,具體數目可以cat /proc/sys/fs/file-max察看。32位機默認是1024個。64位機默認是2048.

對socket進行掃描時是依次掃描的,即采用輪詢的方法,效率較低。

當套接字比較多的時候,每次select()都要通過遍歷FD_SETSIZE個Socket來完成調度,不管哪個Socket是活躍的,都遍歷一遍。這會浪費很多CPU時間。

?

?

gevent

greenlet已經實現了協程,但是這個還的人工切換,是不是覺得太麻煩了,不要捉急,python還有一個比greenlet更強大的并且能夠自動切換任務的模塊gevent

?

其原理是當一個greenlet遇到IO(指的是input output輸入輸出,比如網絡、文件操作等)操作時,比如訪問網絡,就自動切換到其他的greenlet,等到IO操作完成,再在適當的時候切換回來繼續執行。

由于IO操作非常耗時,經常使程序處于等待狀態,有了gevent為我們自動切換協程,就保證總有greenlet在運行,而不是等待IO

?

?本身睡覺時間:gecent.sleep()

總結

以上是生活随笔為你收集整理的服务器select与gevent的全部內容,希望文章能夠幫你解決所遇到的問題。

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