@(python3)
psutil 官方文档
psutil是一个跨平台库,能够实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。
wget https://pypi.python.org/packages/8d/96/1fc6468be91521192861966c40bd73fdf8b065eae6d82dd0f870b9825a65/psutil-5.4.0.tar.gz
tar zxvf psutil-5.4.0.tar.gz
cd psutil
python3.6 setup.py install
import psutil
a = psutil.cpu_times() # 显示 cpu 完整信息
print('cpu_times() 的方法有:', dir(a))
print('a 的结果是:', a)
b = psutil.cpu_times(percpu=True) # 显示所有逻辑 CPU 信息
print('所有逻辑 CPU 的信息:', b)
c = psutil.cpu_times().user # cpu 处在用户模式下的时间百分比
print('user 用户的 cpu 百分比:', c)
d = psutil.cpu_count() # cpu_count 默认获取机器的逻辑 CPU 个数
print('cpu 逻辑个数:', d)
e = psutil.cpu_count(logical=False) # 获取机器的物理 CPU 个数
print('cpu 物理个数:', e)
cpu_times() 的方法有: ['count', 'idle', 'index', 'nice', 'system', 'user']
a 的结果是: scputimes(user=2537.26, nice=0.0, system=1376.91, idle=82324.61)
所有逻辑 CPU 的信息: [scputimes(user=645.22, nice=0.0, system=567.17, idle=9568.24), scputimes(user=63.66, nice=0.0, system=30.73, idle=10685.35), scputimes(user=545.66, nice=0.0, system=229.8, idle=10004.28), scputimes(user=64.16, nice=0.0, system=30.74, idle=10684.83), scputimes(user=548.7, nice=0.0, system=231.99, idle=9999.05), scputimes(user=64.27, nice=0.0, system=31.01, idle=10684.45), scputimes(user=541.1, nice=0.0, system=224.57, idle=10014.07), scputimes(user=64.49, nice=0.0, system=30.9, idle=10684.34)]
user 用户的 cpu 百分比: 2537.26
cpu 逻辑个数: 8
cpu 物理个数: 4
import psutil
mem = psutil.virtual_memory() # 获取内存的完整信息
print('打印内存的完整信息:', mem)
total = mem.total # 获取内存总数
print('total 获取内存总数:', total)
free = mem.free # 获取内存空闲数量
print('free 获取当前空闲内存数量:', free)
swap = psutil.swap_memory() # 获取交换分区完整信息
print('swap 分区信息:', swap) # swap 也有 total,free 等方法,可以使用
输出结果:
打印内存的完整信息: svmem(total=17179869184, available=2642497536, percent=84.6, used=13421477888, free=1575473152, active=9622462464, inactive=1067024384, wired=2731991040)
total 获取内存总数: 17179869184
free 获取当前空闲内存数量: 1575473152
swap 分区信息: sswap(total=0, used=0, free=0, percent=0, sin=2193199104, sout=0)
import psutil
disk = psutil.disk_partitions() # 获取磁盘完整信息
print('磁盘完整信息:', disk)
usage = psutil.disk_usage('/') # 获取指定分区的使用情况
print('根分区使用情况:', usage)
counter = psutil.disk_io_counters() # 获取硬盘总的 IO 个数以及读写信息
print('硬盘总 IO 个数以及读写信息:', counter)
结果:
磁盘完整信息: [sdiskpart(device='/dev/disk1', mountpoint='/', fstype='hfs', opts='rw,local,rootfs,dovolfs,journaled,multilabel')]
根分区使用情况: sdiskusage(total=249678528512, used=45608521728, free=203807862784, percent=18.3)
硬盘总 IO 个数以及读写信息: sdiskio(read_count=115403, write_count=102234, read_bytes=3432717824, write_bytes=1946646528, read_time=32067, write_time=49597)
该方法有一个参数,默认,pernice=False,打印所有的网络 IO 信息,True 则输出每个网络接口的 IO 信息。
import psutil
net = psutil.net_io_counters() # 默认获取所有网络的 IO 信息
print(net)
net_sigle = psutil.net_io_counters(True) # 获取每个网络接口的 IO 信息
print(net_sigle)
输出结果如下:
snetio(bytes_sent=12998924, bytes_recv=133243562, packets_sent=102924, packets_recv=446710, errin=0, errout=0, dropin=0, dropout=0)
import psutil
import datetime
user = psutil.users() # 获取当前登录系统的用户信息
print(user)
time = psutil.boot_time() # 获取系统时间
v_time = datetime.datetime.fromtimestamp(time) # 使用 fromtimestamp 方法获取可视化时间
print(v_time)
输出结果:
[suser(name='wangxiansheng', terminal='console', host=None, started=1509580544.0, pid=95), suser(name='wangxiansheng', terminal='ttys002', host=None, started=1509590144.0, pid=3600)]
2017-11-02 07:55:44