Python中的twisted,tornado,gevent?
- gevent
Python的并發(fā)框架
代碼看起來好看一些,但是維護比較差,patch沒有規(guī)律,而且里面封裝了C,對python3的支持最差.
- twisted
Python的事件驅(qū)動,異步執(zhí)行任務(wù)的網(wǎng)絡(luò)框架框架
穩(wěn)定性是最好的,但是需要較長時間的學習.對python3的支持較差.
- tornado
Python的web開發(fā)框架
兼容性最好.但是過于簡單了,功能不強,另外沒有python數(shù)據(jù)庫適配器能和tornado無縫對接,因此調(diào)用數(shù)據(jù)庫很麻煩,而且只支持web.
tornado見解
tornado雖然是一個異步框架维哈,但是也僅僅是框架而已秦踪,他只是實現(xiàn)了get或者post方法相對于返回消息的異步處理啸罢,但是畢竟是單進程單線程的,通過一個事件隊列來對所有經(jīng)過了自己事件化的事物做的分片處理,遇到執(zhí)行一個沒有異步化的命令欺矫,比如有IO操作的命令(或者耗時的命令)沈跨,自然框架就無能為力了,雖然他自己實現(xiàn)了一些異步的工具煤杀,比如AsyncHttpClient,但是還是太少了眷蜈,比如訪問數(shù)據(jù)庫的網(wǎng)絡(luò)IO,等待數(shù)據(jù)庫返回數(shù)據(jù)沈自,向redis請求數(shù)據(jù)等等酌儒,絕大部分關(guān)鍵的操作其實都是包含了blocking的IO操作的.
gevent見解
gevent可以說實現(xiàn)的比較徹底,他把所有的sockt枯途,disk 的IO操作都做了協(xié)程化處理忌怎,所以結(jié)合結(jié)合到tornado的異步化框架,效果肯定要好不少酪夷,特別是那種處理過程中涉及到IO操作頻繁的場景榴啸,更為明顯.
twisted見解
他支持很多種協(xié)議,包括UDP,TCP,TLS和其他應(yīng)用層協(xié)議,這點非常好,開發(fā)人員可以直接只用這些協(xié)議的實現(xiàn).