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

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

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

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

小怪獸愛吃肉 2018-10-10 12:09:18
查看完整描述

2 回答

?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊

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

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

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

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

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

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

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

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

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊

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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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