哪些適合使用gevent的場景 知乎

2021-08-22 01:48:00 字數 708 閱讀 9659

一種技術的出現必然是為了解決某種問題,gevent是為了解決什麼問題呢,設想下面這種情況。

你仔細分析這個聊天室的**執**況,會發現這麼多的程序或者執行緒大部分時間都是閒的,它們在等瀏覽器發訊息,啥事都沒乾。針對這個問題,你可以想到,要乙個程序在閒的時候去幹其他的事情,等這邊訊息到了再回來處理就好了。gevent把這個功能實現了,切換開銷大大降低,系統效能飆公升。

總結起來就一句話,如果系統資源過的消耗在程序執行緒切換上面,用gevent!

我就說說我用過的場景吧

1.遊戲伺服器,基本是gevent ,tornado,twisted三選一,如遊戲伺服器框架gfirefly

2.爬蟲,gevent的pool是個大殺器

3.使用gevent加速web應用,如flask搭配gevent,還可以實現長連線(ajax方式),websocket

適用於非同步io的高併發場景。如果支援非同步io都建議使用,以便獲取極高的併發效能。比如網路訪問,讀取檔案。

參考這篇文章:does asynchronous i/o make sense in openstack?。大意是說,非同步io框架比如eventlet可以減少記憶體占用(memory printfeet)但是對於io密集型和cup密集型程式意義不大。io密集型程式一般使用佇列技術來保證系統不會崩潰。cup密集型系統會採取類似的策略。總之這兩種系統都不適合併發。

我覺得cpu密集型系統適合並行技術。可以使用高算框架(高效能計算)。

Redis有哪些適合的場景?

會話快取 session cache 用redis快取會話比其他儲存 如memcached 的優勢在於 redis提供持久化。當維護乙個不是嚴格要求一致性的快取時,如果使用者的購物車資訊全部丟失,大部分人都會不高興。全頁快取 fpc 除基本的會話token之外,redis還提供很簡便的fpc平台。佇...

哪些場景適合使用索引覆蓋來優化SQL

select count age from user 使用索引覆蓋優化 建立age欄位索引 select id,age,name from user where age 10 使用索引覆蓋 建組合索引idx age name age,name 即可 select id,age,name from u...

簡述每個週期具體適合哪些場景

答 beforecreate 在new乙個vue例項後,只有一些預設的生命週期鉤子和預設事件,其他的東西都還沒建立。在beforecreate生命週期執行的時候,data和methods中的資料都還沒有初始化。不能在這個階段使用data中的資料和methods中的方法 create data 和 m...