前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python常用库-Psutil

Python常用库-Psutil

原创
作者头像
叉叉敌
修改2019-02-11 18:15:04
1.6K0
修改2019-02-11 18:15:04
举报
文章被收录于专栏:Chasays

@toc

***

背景

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

推荐的理由主要有 2 个,第一个是跨平台的,不管是OSX、Centos、Windows还是SUSE、Ubuntu,都可以用这个工具,对于运维来说,非常实用;第二个是强于os.system()、os.popen()以及subprocess,需要对回显处理,但是Psutil只需要对结果,像处理 Dict 一样「返回的属性因平台而异」,就可以轻松拿到想要的东西。

安装

安装非常简单,用pip就可以上路了。

代码语言:txt
复制
pip install psutil  # python2
pip3 install psutil # python3

系统相关功能

CPU相关

获取CPU数量:

代码语言:txt
复制
import psutil # 后面不再加这句代码
psutil.cpu_count()   # cpu数量
psutil.cpu_count(logical=True) # 逻辑CPU的数量

获取CPU每个CPU当前利用率:

代码语言:txt
复制
psutil.cpu_percent(interval=1)  # 1 秒后线束总的利用率结果
psutil.cpu_percent(interval=0, percpu=True) # 立马显示每个CPU结果

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

代码语言:txt
复制
psutil.cpu_freq(percpu=True) #获取每个CPU的频率
内存

获取物理内存的利用情况:

代码语言:txt
复制
psutil.virtual_memory() # 有点类似 free 命令

获取 Swap 交换内存:

代码语言:txt
复制
psutil.swap_memory() # 有点类似 free 命令
硬盘

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

代码语言:txt
复制
psutil.disk_partitions(all=False) #类似lsblk命令

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

代码语言:txt
复制
psutil.disk_usage("C:\\") # 查看C盘
网络

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

代码语言:txt
复制
psutil.net_io_counters() 

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

代码语言:txt
复制
psutil.net_connections() # 返回连接详细信息

获取网口信息和状态:

代码语言:txt
复制
psutil.net_if_addrs() # 获取网络接口信息
psutil.net_if_stats() # 获取网络接口状态

进程

获取所有进程PID:

代码语言:txt
复制
psutil.pids() # 所有进程ID

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

代码语言:txt
复制
pid = psutil.Process(8888) # 获取进程pid为8888
的进程
pid.name() # 进程名称
pid.status() # 进程状态
pid.terminate() # 终止经常

实例

  1. 通过进程名字找到对应的进程信息
代码语言:txt
复制
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

2. 根据进程PID整理后输出

代码语言:python
代码运行次数:0
复制
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])

扩展阅读

  1. 官方 Psutil 最新文档undefined
  2. Psutil - 廖雪峰官方网站

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 安装
  • 系统相关功能
    • CPU相关
      • 内存
        • 硬盘
          • 网络
          • 进程
          • 实例
          • 扩展阅读
          相关产品与服务
          对象存储
          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档