psutil模块

Posted bladecheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了psutil模块相关的知识,希望对你有一定的参考价值。

psutil

能够轻松实现获取系统运行的进程和系统利用率

安装、导入模块

pip install psutil  # 安装
import psutils  # 导入

获取系统性能信息

CPU信息

1.使用cpu_times()方法获取CPU的完整信息:

psutil.cpu_times()
---------------------------------------------------------------------------------------
scputimes(user=15606.75, system=14908.984374999942, idle=323725.765625, interrupt=685.906
25, dpc=571.21875)

2.获取单项数据,例如用户user的CPU时间比:

psutil.cpu_times().user

3.获取CPU的个数:

psutil.cpu_count()  # 默认logical=True,获取逻辑个数
psutil.cpu_count(logical=False)  # 获取CPU的物理个数

内存信息

获取物理内存总大小和已使用内存:

mem = psutil.virtual_memory()
mem   # 显示所有的参数,svmem(total=8494747648, available=3692544000, percent=56.5, used=4802203648, free=3692544000)
mem.total # 总内存
mem.used  # 已使用内存
m.free  # 获取空闲内存数 
psutil.swap_memory() # 获取SWAP分区信息,sswap(total=12118626304, used=8851152896, free=3267473408, percent=73.0, sin=0, sout=0)

磁盘信息

磁盘IO信息包括read_count(读IO数),write_count(写IO数),read_bytes(IO写字节数),read_time(磁盘读时间),write_time(磁盘写时间)
1.获取磁盘完整信息:

 psutil.disk_partitions()

2.获取分区的使用情况:

 psutil.disk_usage('C:/') # 里面参数为所在磁盘分区,获取分区表信息,sdiskusage(total=129393225728, used=82884608000, free=46508617728, percent=64.1)

3.获取硬盘总的IO个数:

 psutil.disk_io_counters()  # 获取磁盘IO总个数,sdiskio(read_count=577776, write_count=479420, read_bytes=18559246848, write_bytes=12466834944, read_time=506, write_time=517)
 psutil.disk_io_counters(perdisk=True) # 获取单个分区的IO个数 

网络信息

网络信息与磁盘IO信息类似,包括byes_sent(发送字节数),byte_recv=xx(接受字节数),pack-ets_sent=xx(发送字节数),pack-ets_recv=xx(接收数据包数)
获取网络总的IO信息:

 psutil.net_io_counters()
 psutil.net_io_counters(pernic=True) # 输出单个网络接口的IO信息 

其他系统信息

1.返回当前登录系统的用户信息:

 psutil.users()

2.获取开机时间:

 psutil.boot_time() # 以Linux时间戳格式返回
# 如果想要转换成自然时间格式:
 datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")

进程管理

进程信息

获取当前应用程序的运行状态,包括进程的启动时间,查看设置CPU亲和度,内存使用率,IO信息,socket连接,线程数等
1.列出所有进程PID

 psutil.pids()

2.获取单个进程的名字,路径状态

 p = psutil.Process(716)
 p.name() # 进程名
 p.exe() # 进程bin路径
 p.cwd() # 进程工作目录的绝对路径
 p.status() # 进程状态
 p.create_time() # 进程创建时间
 p.uids() # 进程uid信息
 p.gids() # 进程gid信息
 p.cpu_times() # 进程CPU时间信息
 p.cpu_affinity() # get进程的亲和度
 p.memory_percent() # 进程内存使用率
 p.memory_info()    #进程内存rss,vms信息
 p.io_counters()    #进程的IO信息,包括读写IO数字及参数
 p.connections()   #返回进程列表
 p.num_threads() # 进程开启的线程数

popen类的使用

popen类可以获取用户启动的应用程序进程信息。

 p = putil.Popen(["/usr/bin/python","-c","print('Hello')"],stdout=subprocess.PIPE)
 p.name()
 p.username() # 创建进程的用户
 p.communicate()
('hellon',None)
 p.cpu_times() # 得到进程运行的CPU时间

以上是关于psutil模块的主要内容,如果未能解决你的问题,请参考以下文章

python之psutil模块

psutil模块

psutil模块

模块 psutil 系统信息获取

psutil模块获取网卡流量

psutil模块安装