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

  • 相关阅读:
    认识AppDomain类
    认识Math类
    控制输入法
    开发中常见错误
    flash视频窗口被关闭卡住了父窗口
    TransactionScope 事务 net2.0
    发现system.collection 命名空间下面的类大部分是基于数组来存储
    utf8 编码出现空白
    如何WEB上的消息提醒
    当前不会命中断点
  • 原文地址:https://www.cnblogs.com/ydf0509/p/11223275.html
Copyright © 2011-2022 走看看