文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python 让cpu满载

2023-01-30 22:07

关注

搞zabbix监控的时候,linux服务器的负载很低,如何写一个python脚本,让它满载呢?

网上搜了一堆,发现各种不靠谱。后来终于发现了更简单的方法,就是定义一个死循环函数,让函数什么都不做就好了

def deadloop():
    while True:
         pass
 
deadloop()

就是这么简单的几行就能让cpu的一个线程满载

执行之后,查看top

[root@localhost ~]# top
top - 17:13:36 up  5:24,  8 users,  load average: 0.23, 0.08, 0.06
Tasks: 132 total,   2 running, 130 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.3 us,  0.7 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3874004 total,  2856660 free,   410604 used,   606740 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  3183588 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 7519 root      20   0  122852   5496   2428 R  99.3  0.1   0:13.11 python3
 6439 root      20   0  862228  49056   8776 S   1.3  1.3   0:22.24 python3
 7520 root      20   0  157752   2236   1576 R   0.3  0.1   0:00.01 top

发现只有一个cpu是满载的,使用w查看负载,还是很低

[root@localhost ~]# w
 17:14:35 up  5:25,  8 users,  load average: 0.72, 0.25, 0.12


如何让4个cpu都满载呢?

使用多进程,那么开几个进程合适呢?根据CPU核心数来!


获取CPU核心数

写一个测试脚本

from multiprocessing import cpu_count
print(cpu_count())

执行输出:4


使用多进程并结合CPU核心数

from multiprocessing import cpu_count
from multiprocessing import Process

def func():  # 死循环函数,让cpu满载
    while True:
         pass

if __name__ == '__main__':
    p_lst = []  # 定义一个列表
    core_count = cpu_count()  # CPU核心数
    for i in range(core_count):
        p = Process(target=func)  # 子进程调用函数
        p.start()  # 启动子进程
        p_lst.append(p)  # 将所有进程写入列表中
    for p in p_lst: p.join()  # 检测p是否结束,如果没有结束就阻塞直到结束,否则不阻塞
    print('结束')

执行此脚本,并查看top状态

[root@localhost ~]# top
top - 17:18:52 up  5:30,  8 users,  load average: 0.11, 0.20, 0.14
Tasks: 134 total,   5 running, 129 sleeping,   0 stopped,   0 zombie
%Cpu0  : 99.7 us,  0.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3874004 total,  2915672 free,   351628 used,   606704 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  3242624 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 7564 root      20   0  132664   6040   1192 R 100.0  0.2   0:08.65 python3
 7566 root      20   0  132664   6000   1152 R 100.0  0.2   0:08.64 python3
 7565 root      20   0  132664   5988   1140 R  99.7  0.2   0:08.63 python3
 7567 root      20   0  132664   6004   1156 R  99.7  0.2   0:08.63 python3

查看cpu使用率,发现4个python3进程都是100%

等待1分钟,查看负载,发现CPU负载在不断上升

[root@localhost ~]# w
 17:20:32 up  5:31,  8 users,  load average: 3.29, 1.29, 0.54
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      16:51   23:28   0.56s  0.56s -bash

服务器的风扇,在呼呼的叫。先停止吧,死机就完蛋了!


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯