下面的代碼,會使32核linux服務器志強e5的cpu使用率達到3200%,然后別的什么程序都跑不了。
如果windows,cpu使用率會達到100%。這是計算方式有點區別。
個人計算機,除非你是8路 i9 9900k並聯的超級計算機 ,可以確定的是任何價格在5萬人民幣以下的電腦都會把鼠標鍵盤鼠標卡得動不了。
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使用率。