第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

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

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

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

2 回答

?
ABOUTYOU

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

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

Tornado之所以與眾不同, 是因?yàn)樗潜姸郬SGI框架中的一個特例. 它的異步方式也給了社區(qū)很多啟發(fā), 影響力很大.

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

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

你需要小心不要寫出CPU占用太高的代碼, 因?yàn)镃PU不是按照時間平均分配給大家的, 如果你的程序處理一件事情需要兩秒鐘, 那么兩個線程的程序可能會同時跑, 總共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).

實(shí)戰(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)驗(yàn) 獲得超4個贊

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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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