Python之开源库psutil

psutil是一个开源的跨平台的库,它提供了便利的函数来获取操作系统的信息。psutil广泛应用于系统监控,进程管理,资源限制等。通过pip install psutil安装使用。

1.cpu

>>> import psutil
#获取逻辑cpu数量
>>> psutil.cpu_count()
1
#获取物理cpu数量
>>> psutil.cpu_count(logical=False)
2
#获取cpu利用率
>>> psutil.cpu_percent()
0.3
#获取每个cpu的利用率
>>> psutil.cpu_percent(percpu=True)
[0.2,0.3]
#获取cpu的时间花费
>>> psutil.cpu_times()
scputimes(user=6.53, nice=0.0, system=17.84, idle=699.96, iowait=6.69, irq=0.0, softirq=0.13, steal=0.0, guest=0.0, guest_nice=0.0)
#获取cpu消耗时间比例
>>> psutil.cpu_times_percent()
scputimes(user=0.0, nice=0.0, system=0.1, idle=99.8, iowait=0.0, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)
#获取cpu统计信息
>>> psutil.cpu_stats()
scpustats(ctx_switches=323724, interrupts=103135, soft_interrupts=133813, syscalls=0)

2.内存

#返回内存的使用情况,包括总内存,可用内存,内存利用率,buffer,cached,单位以字节为单位。
>>> psutil.virtual_memory()
svmem(total=1019797504, available=730796032, percent=28.3, used=149696512, free=745730048, active=78303232, inactive=81920000, buffers=2158592, cached=122212352, shared=8036352, slab=57479168)

3.磁盘

#获取磁盘分区
>>> psutil.disk_partitions()
[sdiskpart(device='/dev/mapper/centos-root', mountpoint='/', fstype='xfs', opts='rw,seclabel,relatime,attr2,inode64,noquota'), sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='xfs', opts='rw,seclabel,relatime,attr2,inode64,noquota')]
#获取磁盘分区使用情况
>>> psutil.disk_usage('/')
sdiskusage(total=40254042112, used=2806833152, free=37447208960, percent=7.0)
#磁盘分区使用百分比
>>> psutil.disk_usage('/').percent
7.0
#获取磁盘io信息,包括读写次数,读写字节数等。
>>> psutil.disk_io_counters()
sdiskio(read_count=8874, write_count=3147, read_bytes=246166016, write_bytes=22124544, read_time=89454, write_time=3384, read_merged_count=15, write_merged_count=124, busy_time=43136)
>>> psutil.disk_io_counters(perdisk=True)
{'sda': sdiskio(read_count=5478, write_count=2536, read_bytes=127870976, write_bytes=12110848, read_time=45016, write_time=1838, read_merged_count=15, write_merged_count=124
...

4.网络

#返回每网卡的io信息,收发字节数,收发包数量,出错情况与删包情况。
>>> psutil.net_io_counters()
snetio(bytes_sent=12095259, bytes_recv=2958832250, packets_sent=145944, packets_recv=2050268, errin=0, errout=0, dropin=0, dropout=0)
#查看网络连接详细信息,包括网络连接状态等
>>> psutil.net_connections()
#返回网卡的配置信息,包括ip,mac地址等
>>> psutil.net_if_addrs()
#返回网卡的详细信息,包括是否启动,传输速度等
>>> psutil.net_if_stats()

5.其他

#返回登录用户的信息
>>> psutil.users()
[suser(name='root', terminal='pts/0', host='192.168.244.1', started=1599565440.0, pid=7231)]
#返回系统启动时间
>>> psutil.boot_time()
>>> import datetime
datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
'2020-09-08 19:43:40'

6.进程管理

>>> psutil.Process()
psutil.Process(pid=7250, name='python', started='19:50:42')

Process类是对进程的封装,包含了许多方法来获取进程的信息。

name:获取进程的名字。

cmdline:获取启动进程的命令行参数。

creat_time:获取进程的创建时间。

num_fds:进程打开的文件个数。

num_threads:进程的子进程个数。

is_running:判断进程是否正在运行。

send_signal:给进程发送信号。

kill:发送SIGKILL信号结束进程。

terminate:发送sigterm信号结束进程。

>>> a = psutil.Process()
>>> a.name()
'python'
#判断进程是否存在
>>> psutil.pid_exists(1)
True
>>> psutil.pid_exists(100)
False
#获取所有进程
for pid in psutil.pids():
print(pid,end=‘,’)
#查找微信程序相关进程
if proc.info['name'].startswich('WeChat'):
print(proc.info)
#获取cpu占用
psutil.Process(12476).cpu_times()\
#获取内存占用,rss是实际占用的内存
psutil.Process(12476).memory_info()
#获取线程数
psutil.Process(12476).num_threads()
#获取内存占比
psutil.Process(12476).memory_percent()


「 文章如果对你有帮助,请点个赞哦^^ 」 

0