最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

知乎為什么使用Tornado?使用Python中的多線程特性了嗎

知乎為什么使用Tornado?使用Python中的多線程特性了嗎

Smart貓小萌 2018-10-10 11:53:13
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗 獲得超5個贊

自從使用tornado以后就不再使用django了, tornado也從1.x到了現(xiàn)在3.x

Tornado之所以與眾不同, 是因為它是眾多WSGI框架中的一個特例. 它的異步方式也給了社區(qū)很多啟發(fā), 影響力很大.

單就非阻塞和多線程, 起到的都是"多任務(wù)"那種功能. 不同的是, 多線程把處理器時間按照任務(wù)平分, 非阻塞是按照事件來驅(qū)動多任務(wù), 不會在一個任務(wù)沒有執(zhí)行完的時候打斷(沒有保存變量, 任務(wù)切換這種事情, 當(dāng)然也不需要加鎖)

至于哪個對web開發(fā)更重要? 寫出來的程序功能是一樣的. 如果是異步寫, 代碼會多一點(diǎn), 因為有很多callback, 但是你完全無需處理多線程程序的共享資源問題, 無需數(shù)據(jù)庫連接池.

你需要小心不要寫出CPU占用太高的代碼, 因為CPU不是按照時間平均分配給大家的, 如果你的程序處理一件事情需要兩秒鐘, 那么兩個線程的程序可能會同時跑, 總共5秒同時結(jié)束(1秒鐘用在任務(wù)切換).

如果是異步環(huán)境, 那么就是先執(zhí)行一個程序2秒, 然后再執(zhí)行另外一個程序2秒, 總共4.5秒(無需保存環(huán)境, 假設(shè)任務(wù)切換0.5秒)

對于那種CPU消耗極小的等待任務(wù), 比如同步的curl操作(服務(wù)器在等待另外一個服務(wù)器), 這等待的1秒鐘, 使用異步的話tornado已經(jīng)可以處理幾千個其他的http requests, 奇妙的是tornado這個時候還是工作在單線程模式, CPU幾乎完全沒有浪費(fèi).

實戰(zhàn)中, 其他框架需要在多進(jìn)程prefork模式下開到60-100個進(jìn)程的吞吐能力, tornado可能開1到3個進(jìn)程, 處理能力是類似的. 注意在多進(jìn)程模式下, cpu需要不斷切換60個進(jìn)程的壓力是不小的.
查看完整回答
反對 回復(fù) 2018-10-24
?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗 獲得超4個贊

好像是異步特性,Tornado輕量,性能不錯
查看完整回答
反對 回復(fù) 2018-10-24
  • 2 回答
  • 0 關(guān)注
  • 1283 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號