python while 1 然后pass会发生什么?

下面的代码,会使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使用率。

猜你喜欢

转载自www.cnblogs.com/ydf0509/p/11223275.html