python while 1 而後pass會發生什麼?

下面的代碼,會使32核linux服務器志強e5的cpu使用率達到3200%,而後別的什麼程序都跑不了。java

若是windows,cpu使用率會達到100%。這是計算方式有點區別。python

我的計算機,除非你是8路 i9 9900k並聯的超級計算機 ,能夠肯定的是任何價格在5萬人民幣如下的電腦都會把鼠標鍵盤鼠標卡得動不了。linux

 

import multiprocessing

def f():
while 1:
pass

if __name__ == '__main__':
for _ in range(32):
multiprocessing.Process(target=f).start()


while 1而後裏面什麼都不作只寫個pass,有的人說既然是pass,那麼cpu確定使用率很低,
這個意識有點差,代碼一直在while1 和 pass這兩行無限快速跳來跳去,是一直要耗費cpu的。


爲了賭這個代碼費不費cpu,還贏得了一個免費晚餐。



髮結果截圖:

這是windwos電腦,12核24線程的洋垃圾,cpu直接打滿,鼠標卡得動彈不了。

 



linux的截圖,這個是雙路e5 2650,16和32線程。每一個py進程都達到100%,直接使總cpu使用率達到3200%。
單個python進程最高只能使用100%的cpu使用率,單個java最高可使用3200%的cpu使用率,因此py在cpu密集型計算後開多進程很是有必要。

 

打這個賭獲得免費晚餐,兼職太容易。while 1: pass雖然啥都不作,可是解釋器須要一直循環運行了 這兩句,怎麼可能不要cpu?你們在設計代碼時候要避免這樣while 1無限死循環中運行代碼,必定最少要sleep哪怕是0.00001 秒也會大大減小cpu使用率。
相關文章
相關標籤/搜索