zoukankan      html  css  js  c++  java
  • 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使用率。

  • 相关阅读:
    ubuntu18【合上盖子不休眠】
    linux和windows双系统开机显示 Minimal BASHlike line editingis supported xxxxxx
    Linux下opera不支持h5播放器的解决方法
    linux openjdk路径
    Linux安装redis tar.gz
    dpkg 安装deb文件
    Linux破解Navicat15
    kali设置grub主题
    kali安装git tar.gz
    kali 安装 teamviewer 显示检测到wayland
  • 原文地址:https://www.cnblogs.com/ydf0509/p/11223275.html
Copyright © 2011-2022 走看看