• psutil


    psutil

    介绍

    介绍一个处理进程的实用工具,这个是一个第三方库。应用主要有类似 ps、cd、top,还有查看硬盘、内存使用情况等。

    推荐的理由主要有 2 个,第一个是跨平台的,不管是 OSX、Centos、Windows还是SUSE、Ubuntu,都可以用这个工具,对于运维来说,非常实用;

    第二个是强于os.system()、os.popen()以及subprocess,需要对回显处理,但是 Psutil 只需要对结果,像处理 Dict 一样「返回的属性因平台而异」,就可以轻松拿到想要的东西

    安装

    pip install psutil
    

    系统相关功能

    CPU相关

    获取 CPU 数量

    import psutil
    
    print(psutil.cpu_count())  # cpu数量
    print(psutil.cpu_count(logical=True))  # 逻辑CPU的数量)
    

    获取CPU每个CPU当前利用率

    print(psutil.cpu_percent(interval=1))  # 1 秒后线束总的利用率结果
    print(psutil.cpu_percent(interval=0, percpu=True)) # 立马显示每个CPU结果
    

    获取CPU的频率,包括最低、高频率,以及当前频率

    psutil.cpu_freq(percpu=True) #获取每个CPU的频率
    

    内存

    获取物理内存的利用情况

    psutil.virtual_memory() # 有点类似 free 命令
    

    获取 Swap 交换内存

    
    

    硬盘

    获取硬盘分区,返回的是分区格式类型,挂载点

    psutil.disk_partitions(all=False) #类似lsblk命令
    

    获取硬盘利用率,返回的是使用多少、还剩多少,以及使用率

    psutil.disk_usage("C:\") # 查看C盘
    

    网络

    获取当前网络的IO情况,返回IO的字节、包的数量

    psutil.net_io_counters() 
    

    获取当前连接数,对于这个需要root用户权限,因此在运行python的时候加上sudo

    psutil.net_connections() # 返回连接详细信息
    

    获取网口信息和状态

    psutil.net_if_addrs() # 获取网络接口信息
    psutil.net_if_stats() # 获取网络接口状态
    

    进程

    获取所有进程 PID

    psutil.pids() # 所有进程ID
    

    可以通过指定进程PID来获取,进程名称、进程路径、状态以及结束进程等

    pid = psutil.Process(8888) # 获取进程 pid 为 8888 的进程
    pid.name() # 进程名称
    pid.status() # 进程状态
    pid.terminate() # 终止经常
    

    实例

    通过进程名字找到对应的进程信息

    import psutil
    
    def find_procs_by_name(name):
        "Return a list of processes matching 'name'."
        ls = []
        for p in psutil.process_iter(attrs=['name']):
            if p.info['name'] == name:
                ls.append(p)
        return ls
    

    根据进程 PID 整理后输出

    import psutil
    from pprint import pprint as pp # 排版
    pp([(p.pid, p.info) for p in psutil.process_iter(attrs=['name', 'status']) if p.info['status'] == psutil.STATUS_RUNNING])
    
  • 相关阅读:
    python读取配置文件
    日志截取
    QJsonObject
    OpenStack
    生成器迭代器正则视频笔记
    使用Qt.createComponent 动态加载组件
    linux 远程执行命令
    Django 建立工程连接数据库
    arm基础1
    QSetting的用法
  • 原文地址:https://www.cnblogs.com/kai-/p/12666410.html
Copyright © 2020-2023  润新知