psutil(系统系能信息模块)

psutil是一个跨平台,能够轻松实现获取系统运行的进程和利用率(包括CPU、内存、磁盘、网络等)信息。主要应用域系统监控,分析和限制系统资源及进程管理。它实现了同等命令行工具提供的功能,如ps/top/lsof/netstat/who/df/kill/nice/free/nice/ionstat/iotop/uptime/pidof/tty/taskset/pmap等。支持从2.4到3.4的python版本。

psutil大小单位一般都采用字节。

安装psutil

wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz --no-check-certificate
tar -xzvf psutil-2.0.0.tar.gz
cd psutil-2.0.0
python setup.py install   #psutil/_psutil_linux.c:12:20: 致命错误:Python.h:没有那个文件或目录
yum install python-devel.x86_64

1、cpu信息

linux操作系统的CPU利用率有以下几个部分:

user time,执行用护进程的时间百分比

system time,执行内核进程和中伏案的时间百分比

wait io,由于IO等待而使CPU处于idle(空闲)状态的时间百分比;

Idle,CPU处于idle状态的时间百分比

我们使用python的psutil.cpu_times()方法可以非常简单地得到这些信息,同事也可以获取CPU的硬件相关信息,比如CPU的硬件相关信息,比如CPU的物理个数域逻辑个数。

>>> psutil.cpu_times()                  #查看cpu所有信息
scputimes(user=762.76, nice=4.47, system=428.97, idle=4012472.08, iowait=207.27, irq=0.0, softirq=7.07, steal=0.0, guest=0.0, guest_nice=0.0)
>>> psutil.cpu_times().user             #查看用户的cpu时间比
762.77
>>> psutil.cpu_count()                  #查看cpu逻辑个数
2
>>> psutil.cpu_count(logical=False)     #查看cpu物理个数
2

2、内存信息

linux系统的内存利用率信息涉及total(内存总数)、used(已使用的内存数)、free(空闲内存数)、buffers(缓冲使用数)、cache(缓存使用数)、swap(交换分区使用数)等。分别使用psutil.virtual_memory()与psutil.swap_memory()方法获取这些信息。

>>> import psutil
>>> mem = psutil.virtual_memory()           #使用psutil.virtual_memory方法获取内存完整信息
>>> mem
svmem(total=3975487488L, available=2716561408L, percent=31.7, used=2024685568L, free=1950801920L, active=1328680960, inactive=484872192, buffers=1433600L, cached=764325888)
>>> mem.total                               #获取内存总数
3975487488L
>>> mem.free                                #获取空闲内存
1950801920L
>>> psutil.swap_memory()                    #获取SWAP分区信息
sswap(total=1073737728L, used=0L, free=1073737728L, percent=0.0, sin=0, sout=0)
>>>

3、磁盘信息

磁盘利用率使用psutil.disk_usage方法获取,

磁盘IO信息包括read_count(读IO数),write_count(写IO数),read_bytes(IO写字节数),read_time(磁盘读时间),write_time(磁盘写时间),这些IO信息用psutil_io_counters()获取。

psutil.disk_io_counters()        #获取磁盘总的IO个数
psutil.disk_partitions()        #获取磁盘的完整信息
psutil.disk_usage(‘/‘)   #获取/分区(参数)的使用状态
psutil.disk_io_counters(perdisk=True)    #perdisk=True参数获取单个分区IO个数、读写信息

4、读取网络信息

网络信息与磁盘IO信息类似,涉及到几个关键点,包括byes_sent(发送字节数),byte_recv=xxx(接受字节数),pack-ets_sent=xxx(发送字节数),pack-ets_recv=xxx(接收数据包数),这些网络信息用psutil.net_io_counters()方法获取。

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

5、获取当前系统用户登录信息

psutil.users()      #获取当前登录系统的用户信息
import psutil,datetime
psutil.boot_time()     #获取开机时间,以linux时间格式返回
datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S") #转换成自然时间格式

6、系统进程管理方法

获取当前系统的进程信息,获取当前程序的运行状态,包括进程的启动时间,查看设置CPU亲和度,内存使用率,IO信息、socket连接、线程数等。

(1)获取进程信息

查看系统全部进程

psutil.pids()    #列出所有进程ID
 p = psutil.Process(2423)     #实例化一个process对象,参数为一进程PID
 p.name()   #进程名
 p.exe()    #进程的bin路径
 p.cwd()    #进程的工作目录绝对路径
 p.status()   #进程状态
 p.create_time()  #进程创建时间
 p.uids()    #进程uid信息
 p.gids()    #进程的gid信息
 p.cpu_times()   #进程的cpu时间信息,包括user,system两个cpu信息
 p.cpu_affinity()  #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就好
 p.memory_percent()  #进程内存利用率
 p.memory_info()    #进程内存rss,vms信息
 p.io_counters()    #进程的IO信息,包括读写IO数字及参数
 p.connectios()   #返回进程列表
 p.num_threads()  #进程开启的线程数

(2)psutil的Popen类启动应用程序,可以跟踪程序的相关信息

from subprocess import PIPE
p = psutil.Popen(["/usr/bin/python", "-c", "print(‘hello‘)"],stdout=PIPE)
p.name()
p.username()
p.communicate()
p.cpu_times()           #得到进程运行的CPU时间
时间: 2024-11-20 04:50:27

psutil(系统系能信息模块)的相关文章

python - psutil 系统信息模块

# .psutil是一个跨平台库能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息. # 它主要用来做系统监控,性能分析,进程管理. # 它实现了同等命令行工具提供的功能,如ps.top.lsof.netstat.ifconfig.who.df.kill.free.nice.ionice. # iostat.iotop.uptime.pidof.tty.taskset.pmap等. # 目前支持32位和64位的Linux.Windows.OS X.FreeBSD和S

java 获取当前系统系时间

1 //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 2 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 3 String datetime = sdf.format(new Date());//new Date()为获取当前系统时间4 System.out.println(datet

linux系统系啊Yum配置

linux:yum仓库 yum是一个软件包管理器,一般我在安装完一个虚拟机的时候第一时间就是设置它的yum仓库,因为只有这样我们才可以轻松的安装redhat官方提供给我们的各种工具包.所以熟悉和懂得yum仓库的配置是非常重要的. 为什么是YUM? 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载.安装. 是的,它帮助我们把各种RPM包的依赖性解决好了,只需要执行yum命令安装就可以了,所以很实用. 配置YUM

列举一些常见的系统系能瓶颈 Common Bottlenecks

http://www.nowamagic.net/librarys/veda/detail/2408在 Zen And The Art Of Scaling - A Koan And Epigram Approach 一文中, Russell Sullivan 提出一个很有趣的设想:一共有20种经典的瓶颈.这听起来就像只有20种基本的故事情节(20 basic story plots)那样让人怀疑.不过基于每个人不同的分类方式,这个说法或许是对的,但是在现实中,众所周知,瓶颈是无穷无尽的而且涉及

《Python自动化运维之路》 系统基础信息模块(一)

系统性能收集模块Psutil 目录: 系统性能信息模块psutil 系统性能信息模块psutil psutil能够轻松实现获取系统运行的进程和系统利用率包括(CPU,内存,磁盘 和网络)等.主要用于系统监控.对于系统维护来说是个不错的模块. 1.模块的安装 wget https://files.pythonhosted.org/packages/14/a2/8ac7dda36eac03950ec2668ab1b466314403031c83a95c5efc81d2acf163/psutil-5.

北京大学软件与微电子学院嵌入式系统工程系

关于嵌入式系统方向(集成电路方向也可参考) 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一.嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器.存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等.特别是随着消费家电的智能化,嵌入式更显重要.像我们平常常见到的手机.PDA.电子字典.可视电话. VCD/DVD/MP3 Player.数字相机(DC).数字摄像机(DV).U-Disk.机顶盒(Set Top Box).高清电视(HDTV).游戏机.智能玩具.交换

架构设计:系统存储(10)——MySQL简单主从方案及暴露的问题

1.概述 从本篇文章开始我们将花一定的篇幅向读者介绍MySQL的各种服务集群的搭建方式.大致的讨论思路是从最简的MySQL主从方案开始介绍,通过这种方案的不足延伸出更复杂的集群方案,并介绍后者是如何针对这些不足进行改进的.MySQL的集群技术方案特别多,这几篇文章会选择一些典型的集群方案向读者进行介绍. 2.MySQL最简单主从方案及工作原理 我们讲解的版本还是依据目前在生产环境上使用最多的Version 5.6进行,其中一些特性在Version 5.7和最新的Version 8.0中有所改进,

Python学习笔记--系统相关模块和操作

系统相关的信息模块: import sys sys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象. sys.stdin.readline() 从标准输入读一行 sys.stdout.write("a") 屏幕输出a sys.exit(exit_code) 退出程序 sys.modules 是一个dictionary,表示系统中所有可用的module sys.platform

Android课设--菜谱大全应用系统

Android移动应用开发 课程设计报告 (2019-2020学年第一学期) 菜谱大全应用系统 系    别        信息与控制工程 专    业        计算机科学与技术 班    级        计算机1702 学    号       173230201 姓    名        王子瑞 指导教师        郭丹 完成时间         2019.12.5 评定成绩 目录 1. 背景 3 2.系统需求分析 3 2.1用例分析 3 1 用例名称:登录 3 2 用例名称: