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使用率。

  • 相关阅读:
    聆听生活——用心创造
    zedboard通过BRAM实现PS和PL的简单通信
    使用FDATOOL生成xilinx中FIR滤波器IP核的系数
    PCI Express
    波若波罗密多心经
    imp导入时出现imp-00017的问题
    数据库表对比,vim裁剪方法
    [测]jieba分词
    [原]批量修改指定名称的文件名
    [原]通过配合ffmpeg.exe获取视频文件时长
  • 原文地址:https://www.cnblogs.com/ydf0509/p/11223275.html
Copyright © 2011-2022 走看看