psutil简介
psutil是一个跨平台库(http://pythonhosted.org/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和sun solaris等操作系统.
如果安装了anaconda,psutil就可以使用,当然也可使用pip安装,使用前先要导包:
1
|
import psutil |
主要方法简介
psutil.disk_partitions()
返回是一个磁盘分区信息,包括(device, mountpoint, fstype, opts);
psutil.disk_usage()
返回磁盘使用情况:
1
2
3
4
5
6
7
8
|
disk = psutil.disk_partitions() for i in disk: print ( "磁盘:%s 分区格式:%s" % (i.device, i.fstype)) # 盘符 分区格式 disk_use = psutil.disk_usage(i.device) print ( "使用了:%.1f gb,空闲:%.1f gb,总共:%.1f gb,使用率%.1f%%," % ( disk_use.used / 1024 / 1024 / 1024 , disk_use.free / 1024 / 1024 / 1024 , disk_use.total / 1024 / 1024 / 1024 , disk_use.percent)) |
磁盘:c:\ 分区格式:ntfs
使用了:34.8 gb,空闲:48.2gb,总共:83.0 gb,使用率41.9%,
磁盘:d:\ 分区格式:ntfs
使用了:110.5 gb,空闲:89.2gb,总共:199.7 gb,使用率55.4%,
磁盘:e:\ 分区格式:ntfs
使用了:100.1 gb,空闲:95.2gb,总共:195.3 gb,使用率51.3%,
磁盘:f:\ 分区格式:ntfs
使用了:120.6 gb,空闲:64.4gb,总共:184.9 gb,使用率65.2%,
psutil.cpu_percent() cpu的利用率
psutil.virtual_memory()内存情况
1
2
3
4
5
|
memory = psutil.virtual_memory() # memory.used 使用的 # memory.total 总共 ab = float (memory.used) / float (memory.total) * 100 print ( "内存使用率为:%.2f%%" % ab) |
psutil.net_io_counters() 网络使用情况,可以监控电脑每一个网口的上传,下载等信息;每个电脑由于网口名字不同,返回的信息不太一样。用下面的代码可以先打印出来你电脑的网口信息:
1
|
print (psutil.net_io_counters(pernic = true)) |
你会得到类型下面的信息:
1
|
{ '以太网' : snetio(bytes_sent = 0 , bytes_recv = 0 , packets_sent = 0 , packets_recv = 0 , errin = 0 , errout = 0 , dropin = 0 , dropout = 0 ), '本地连接* 2' : snetio(bytes_sent = 0 , bytes_recv = 0 , packets_sent = 0 , packets_recv = 0 , errin = 0 , errout = 0 , dropin = 0 , dropout = 0 ), 'vmware network adapter vmnet1' : snetio(bytes_sent = 597 , bytes_recv = 13 , packets_sent = 596 , packets_recv = 13 , errin = 0 , errout = 0 , dropin = 0 , dropout = 0 ), 'vmware network adapter vmnet8' : snetio(bytes_sent = 1919 , bytes_recv = 13 , packets_sent = 1919 , packets_recv = 13 , errin = 0 , errout = 0 , dropin = 0 , dropout = 0 ), 'wlan' : snetio(bytes_sent = 3993804 , bytes_recv = 76316885 , packets_sent = 35011 , packets_recv = 63467 , errin = 0 , errout = 0 , dropin = 0 , dropout = 0 ), '蓝牙网络连接' : snetio(bytes_sent = 0 , bytes_recv = 0 , packets_sent = 0 , packets_recv = 0 , errin = 0 , errout = 0 , dropin = 0 , dropout = 0 ), 'loopback pseudo-interface 1' : snetio(bytes_sent = 0 , bytes_recv = 0 , packets_sent = 0 , packets_recv = 0 , errin = 0 , errout = 0 , dropin = 0 , dropout = 0 ), 'teredo tunneling pseudo-interface' : snetio(bytes_sent = 13724 , bytes_recv = 760 , packets_sent = 102 , packets_recv = 5 , errin = 0 , errout = 0 , dropin = 0 , dropout = 0 )} |
现在你就可以愉快的监控宽带或wlan的上传和下载速度了,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import psutil import time def net_state(): recv1 = psutil.net_io_counters(pernic = true)[ 'wlan' ][ 1 ] #接收数据 send1 = psutil.net_io_counters(pernic = true)[ 'wlan' ][ 0 ] #上传数据 time.sleep( 1 ) # 每隔1s监听端口接收数据 recv2 = psutil.net_io_counters(pernic = true)[ 'wlan' ][ 1 ] send2 = psutil.net_io_counters(pernic = true)[ 'wlan' ][ 0 ] # 上传数据 return 'upload:%.1f kb/s.' % ((send2 - send1) / 1024.0 ), 'download:%.1f kb/s.' % ((recv2 - recv1) / 1024.0 ) while true: s1 = net_state()[ 0 ] s2 = net_state()[ 1 ] print ( '当前上传和下载速度为:' ) print (s1) print (s2) print ( '---------------------' ) |
如果你不想每次都运行这脚本,可以使用,教程可以参考前面的文章。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。
原文链接:https://juejin.im/post/5cc95ee0e51d456e5b66ae04