亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

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

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

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

2 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

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

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

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

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

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

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

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

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

TA貢獻1833條經驗 獲得超4個贊

好像是異步特性,Tornado輕量,性能不錯
查看完整回答
反對 回復 2018-10-24
  • 2 回答
  • 0 關注
  • 1262 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號