今天给大家介绍一个可以获取当前系统信息的库——psutil
利用psutil库可以获取系统的一些信息,如cpu,内存等使用率,从而可以查看当前系统的使用情况,实时采集这些信息可以达到实时监控系统的目的。
psutil库
psutil的安装很简单
pip install psutil
psutil库可以获取哪些系统信息?
psutil有哪些作用
1.内存使用情况
2.磁盘使用情况
3.cpu使用率
4.网络接口发送接收流量
5.获取当前网速
6.系统当前进程
...下面通过具体代码案例进行演示
内存使用情况
1
2
3
4
5
6
7
8
9
10
11
12
|
import psutil
#内存
mem = psutil.virtual_memory()
# 系统总计内存
zj = float (mem.total) / 1024 / 1024 / 1024
# 系统已经使用内存
ysy = float (mem.used) / 1024 / 1024 / 1024
# 系统空闲内存
kx = float (mem.free) / 1024 / 1024 / 1024
print ( '系统总计内存:%d.4gb' % zj)
print ( '系统已经使用内存:%d.4gb' % ysy)
print ( '系统空闲内存:%d.4gb' % kx)
|
获取当前系统总内存,已使用内存,以及空闲内存
这里获取的内存是的单位是字节,所以需要通过除以1024转为g,下面同样如此就不再重复解释。
获取系统cpu信息
1
2
3
4
5
6
7
8
9
|
#显示cpu所有逻辑信息
print (psutil.cpu_times(percpu = true))
# 查看cpu逻辑个数的信息
print (u "逻辑cpu个数: %s" % psutil.cpu_count())
# 查看cpu物理个数的信息
print (u "物理cpu个数: %s" % psutil.cpu_count(logical = false))
#cpu的使用率
cpu = ( str (psutil.cpu_percent( 1 ))) + '%'
print (u "cup使用率: %s" % cpu)
|
获取cpu信息,以及本机cpu个数(包括逻辑cpu数和物理cpu数),当前的cpu使用率(每隔1秒获取一次,获取查看实时cpu使用率情况)
系统磁盘使用情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
part = psutil.disk_partitions()
for i in part:
print (i)
dk = psutil.disk_usage( '/' )
print (dk)
#总磁盘
total = dk.total / 1024 / 1024 / 1024
used = dk.used / 1024 / 1024 / 1024
free = dk.free / 1024 / 1024 / 1024
print ( '系统总计磁盘:%d.3gb' % total)
print ( '系统已经使用磁盘:%d.3gb' % used)
print ( '系统空闲磁盘:%d.3gb' % free)
print (u "磁盘使用率: %s%%" % dk.percent)
# 获取磁盘总的io个数,读写信息
print (psutil.disk_io_counters())
|
前面几行是当前系统可以访问的磁盘信息
其中第1行mountpoint='/',表示当前本机默认磁盘
其中第6行mountpoint='/volumes/extreme ssd',表示外接固态移动硬盘
这里以本机磁盘mountpoint='/'为例,查看磁盘的使用情况(总容量,已使用,空闲容量,使用率)
最后一行的每一个字段的含义如下:
"""
read_count 读io数
write_count 写io数
read_bytes 读io字节数
write_bytes 写io字节数
read_time 磁盘读时间
write_time 磁盘写时间
"""
获取系统网卡信息
1
2
3
4
5
6
7
8
9
10
|
# 获取网络总io信息
print (psutil.net_io_counters())
# 发送数据包
print ( "发送数据字节:" , psutil.net_io_counters().bytes_sent, "bytes" )
#接收数据包
print ( "接收数据字节:" ,psutil.net_io_counters().bytes_recv, "bytes" )
# 输出网络每个接口信息
net_counter = psutil.net_io_counters(pernic = true)
for i in net_counter:
print ( "网卡:" + i + " ,网卡信息:" ,net_counter[i])
|
可以获取到当前本机中存在哪些网卡,以及发送和接收的流量是多少
通过在终端中查看本机的网卡是否一致
mac和linux系统命令:ifconfig
window系统命令:ipconfig
部分截图如下:
可以看到程序获取的网卡数据和本机终端获取是一致的
获取当前网速
通过上面的程序获取网卡发送和接收的流量来获取当前网速
1
2
3
4
5
|
s1 = psutil.net_io_counters(pernic = true)[ 'en0' ]
time.sleep( 1 )
s2 = psutil.net_io_counters(pernic = true)[ 'en0' ]
result = s2.bytes_recv - s1.bytes_recv
print ( str ( '%d' % (result / 1024 )) + 'kb/s' )
|
代码中的['en0']表示获取en0网卡的数据,因为辰哥本机的网卡是en0
最后可以看到获取当前网速情况
每个1秒执行该代码可以实现实时获取网速
其他功能
1
2
3
4
5
6
7
|
# 系统开机时间
# 转换成自然时间格式
print (datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime( "%y-%m-%d %h: %m: %s" ))
#获取当前系统用户登录信息
users = psutil.users()
for i in users:
print (i)
|
可以获取到本机开机时间,以及当前使用的用户
以上就是python使用psutil对系统数据进行采集监控的详细内容,更多关于python使用psutil对系统数据的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/chenlove/p/15165065.html