Python使用psutil的电脑资源监控软件

前言

心血来潮想写一个电脑资源使用情况的监控程序

环境

  • windows10
  • python3.6.4

方法

  1. 安装psutil模块。打开cmd

    pip install psutil

    psutil模块使用方法看官方说明最好不过。psutil模块使用很简单,当然缺点也很突出,Windows下可读取的数据较少

  2. 导入模块

    from tkinter import *  # 界面
    import psutil  # 监控数据读取
    from time import sleep  # 控制刷新时间
    import threading  # 多线程
  3. 监控数据读取函数

    def data():
        while True:
            cpu_p = psutil.cpu_percent(interval=1, percpu=True)  # 读取CPU使用率
            mem_t = psutil.virtual_memory().total/1024/1024/1024  # 全部内存
            mem_t = round(mem_t, 2)  # 取两位小数
            mem_u = psutil.virtual_memory().used/1024/1024/1024  # 已使用内存
            mem_u = round(mem_u, 2)
            mem_p = psutil.virtual_memory().percent  # 读取内存使用率
            t3.set(cpu_p)
            tt = str(mem_u)+"GB / "+str(mem_t)+"GB("+str(mem_p)+"%)"
            t4.set(tt)
            net_in = psutil.net_io_counters().bytes_recv/1024/1024
            net_in = round(net_in, 2)
            net_out = psutil.net_io_counters().bytes_sent/1024/1024
            net_out = round(net_out, 2)
            net = str(net_in)+"MB / "+str(net_out)+"MB"
            t5.set(net)
            disk_u = psutil.disk_usage("/").percent
            disk_u = str(disk_u)+"%"
            t6.set(disk_u)
            sleep(0.5)
  4. 界面部分。涉及到多线程部分内容,把界面作为主线程,监控数据读取函数作为子线程

    master = Tk()
    t1 = StringVar()
    t2 = StringVar()
    t3 = StringVar()
    t4 = StringVar()
    t5 = StringVar()
    t6 = StringVar()
    
    master.title("资源监控")  # 窗口标题
    master.geometry("300x150+100+100")  # 窗口呈现大小和位置
    cpu_logical = psutil.cpu_count()  # 读取CPU线程数
    cpu_physical = psutil.cpu_count(logical=False)  # 读取CPU核心数
    Label(master, textvariable=t1).grid(row=0, column=0)
    t1.set(cpu_physical)
    Label(master, text="核").grid(row=0, column=1)
    Label(master, textvariable=t2).grid(row=0, column=2)
    t2.set(cpu_logical)
    Label(master, text="线程").grid(row=0, column=3)
    Label(master, text="CPU使用率:").grid(row=1, column=0, columnspan=4)
    Label(master, textvariable=t3).grid(row=1, column=4)
    Label(master, text="内存使用率:").grid(row=2, column=0, columnspan=4)
    Label(master, textvariable=t4).grid(row=2, column=4)
    Label(master, text="网络(下/上):").grid(row=3, column=0, columnspan=4)
    Label(master, textvariable=t5).grid(row=3, column=4)
    Label(master, text="硬盘使用率:").grid(row=4, column=0, columnspan=4)
    Label(master, textvariable=t6).grid(row=4, column=4)
    th1 = threading.Thread(target=data)
    th1.setDaemon(True)  # 守护线程
    th1.start()
    master.mainloop()
    print("END!")
  5. 把第2,3,4步里的程序拼接起来就是全部程序了,没有太多复杂的东西

  6. 有人可能会问Windows下类似软件成堆,而且各个都比这个好,写着有啥意义呢?
    我只能说仅仅看软件是没啥意义,但编程不就在于折腾吗,还有做成下面这样的不就有意思了
    这里写图片描述
  7. 源码链接

猜你喜欢

转载自blog.csdn.net/mildddd/article/details/79894124