為什麼不同的死迴圈占用資源不同?

時間 2021-05-31 01:38:11

1樓:非典型普通人類

首先你在第二段程式中使用了sleep函式,這就會導致兩者的指令執行次數上有著非常大的不同,而且是數量級的不同。前面很多人都講了,這裡就不再重複了。

這裡再補充一點,就是現代計算機基本上都是多核的,而Python因為GIL的存在,使得即使是多執行緒也只會占用乙個核,(並且其佔用率甚至會低於單核執行)而且還存在分片排程的問題。另外再加上作業系統本身還會進行其他的一些操作,總體算下來CPU佔用率不高也就可以理解了。

2樓:蘇莉安

我覺得題主對多執行緒和CPU原理的理解完全擰了,通俗易懂地解釋一下:

如果你的CPU主頻是3GHz,

那麼不加延時的話,一秒內會執行30億次指令;

如果加1毫秒延時的話,一秒內的時間幾乎都用來延時了,實際執行可能少於1000次;

兩者有數量級上的巨大差距。

以上的解釋為了易懂,就不在嚴謹上糾結了。像 @Gin.G說的那樣,因為你有作業系統、後台各種服務、還要經過python直譯器,層層加碼之後,就算是死迴圈實際也只佔了20%的CPU,如果是機器語言實現,那絕對是100%。

3樓:

自己試了一下。

import

threading

import

time

class

MyThread

(threading

.Thread

):def

run(

self

):while

True

:print

1def

test

():t

=MyThread()t

.start

()if

__name__

=='__main__'

:test

()和執行緒沒關係。應該是time.sleep()的功勞。

4樓:binkery

1.第乙個迴圈的次數和第二個迴圈的次數不是乙個數量級的。所以CPU的工作量是差別很大的。

2.我對Python不熟。不過我認為,不管什麼語言,你單起執行緒去做乙個工作,從CPU的角度上,不會減少CPU的工作量的。

3.死迴圈占用資源是因為有大量的指令需要執行,只要在系統排程的範圍內,CPU會很勤勞的滿足計算需求。

個人理解,僅供參考。

為什麼有那麼多不同的思想,不同的學術,不同的觀點,而每乙個看起來都覺得很有道理,我們該如何選擇?

汪曉武 一 具體情境不同,問題不同,要求不同,所用的思想,所釆取的行為舉措自然不同。二 一切精妙盡在具體中感受 運用。三 商場可以用存在等於價值的思想,家庭中能用嗎? 趙守卿 首先 我們說,如果你涉足這門學科,就必須擁有這門學科的知識基礎。比如我不可能在完全沒看過康德情況下去評價叔本華和黑格爾哪個是...

不同的茶,為什麼發餿時間不同?

一席茶話 六堡茶隔夜不餿的品質在茶葉的種類裡算是比較罕見的,那就是無論哪種工藝製成的六堡茶都具有隔夜不餿的特點。這或許是因為六堡茶湯有很強的抗菌能力,雜菌很難入侵滋生,使得茶不容易發餿變質。由此,我們推測這可能與生產六堡茶的工藝 氣候 地理環境 微生物種群等有關。 導致茶葉發餿的主要生化物質是茶葉中...

為什麼性別不同會導致思想不同?

有很多回答都說是社會後期教導,那我來唱個反調,主要是是天性,其次是後期教育。原因很簡單,人類將自己從繁重的體力勞動中脫離出來還沒多少年,相比較人類進化史,太短了,短到男女之間還存在巨大的體格差異,體格差異導致思維不同。手裡拿著錘子 強大肉體 遇到困難都想著先錘兩錘子,沒有錘子,才開始想辦法。男人是狩...