這章我們繼續(xù)講解死循環(huán)的問題。
還是用上章的代碼舉例子,如果我把numbers+=1給注釋掉,那么這個(gè)while循環(huán)的條件永遠(yuǎn)為真了。
直接變成了死循環(huán),這種死循環(huán)對cpu的消耗不大,但是你同時(shí)運(yùn)行幾個(gè)這樣的Python程序,就可能有一定的效率問題了。
你可以自己試試,同時(shí)運(yùn)行剛剛的代碼好幾次。
首先點(diǎn)擊,上面的菜單欄,然后點(diǎn)擊第一個(gè)編輯配置。
然后再點(diǎn)擊勾選允許并行運(yùn)行。
你再把文件多運(yùn)行幾次,如果你的風(fēng)扇聲音大起來了,說明你的cpu在瘋狂運(yùn)行。這里我就不給你們演示了,為了保護(hù)我自己的電腦!
我們再來看另一種死循環(huán)。
這三行代碼就不會對電腦造成影響,不管你運(yùn)行多少個(gè)也不會有效率問題。我們來運(yùn)行一下看,結(jié)果就是你讓你輸入。
然后我們再試試敲回車,敲回車也是一樣的,還是讓你輸入。
我們再輸入看看,隨便輸入字符。我們輸入什么,它就打印什么。
這個(gè)確實(shí)就是死循環(huán),但是它不會有效率問題??墒沁€有一種情況,會有致命的效率問題。
我再寫一個(gè)死循環(huán),然后打印它。什么都沒有,因?yàn)槲覜]有打印輸出內(nèi)容,所以看起來程序像是卡住了,但是我們的程序現(xiàn)在正在不停的循環(huán),不停的算10+10。
我們寫程序是要控制計(jì)算機(jī)硬件的,這段程序往底層分析實(shí)際上是在控制CPU,讓cpu幫我們不停的運(yùn)算10+10這個(gè)操作。
我們上面的代碼input是輸入,也就是I操作,print這叫打印輸出也叫output,O操作,IO操作我最前面就講過,就是控制你的CPU,告訴CPU要執(zhí)行這行代碼,運(yùn)行到“請輸入”這里的時(shí)候,等待用戶輸入內(nèi)容后,CPU才能運(yùn)行下一行代碼。程序等待過程中,CPU就開始休息了。
但是10+10,這個(gè)代碼不是,它是讓CPU不停的運(yùn)算10+10,一點(diǎn)都沒休息時(shí)間,像奴隸一樣。
最后我們總結(jié)一下,死循環(huán)本身來說是無害的,我們也會常用死循環(huán),但是計(jì)算無IO的死循環(huán)就會有致命的效率問題,導(dǎo)致你的電腦壽命損傷
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 死循環(huán)效率問題