Python--使用psutil获取系统信息

系统相关函数

CPU

psutil.cpu_times(percpu=False)

>>> import psutil
>>> psutil.cpu_times()
scputimes(user=121990.06, nice=1303.46, system=46290.16, idle=29968135.79, iowait=33861.26, irq=0.0, softirq=1180.56, steal=0.0, guest=0.0, guest_nice=0.0)
  • user: 执行用户进程所花费的时间
  • system: 执行内核进程所花费的时间
  • idle: CPU空闲时间
  • iowait:等待I/O完成时间

当把参数percpu设置为True,就会以元组形式返回每个逻辑CPU的使用情况

psutil.cpu_percent(interval=None, percpu=False)

返回指定时间段内CPU的使用率百分比,当interval设置为0.0或None时,立即返回从上一次调用或导入模块到现在时间段内CPU使用的百分比。

>>> psutil.cpu_percent(interval=1)
1.5
>>> psutil.cpu_percent(interval=None)
0.8
>>> psutil.cpu_percent(interval=1,percpu=True)
[2.0, 1.0]

psutil.cpu_count(logical=True)

返回CPU个数

>>> psutil.cpu_count()
2
>>> psutil.cpu_count(logical=False)
1

内存

psutil.virtual_memory()

以元组信息返回系统内存使用情况,单位为字节。

>>> psutil.virtual_memory()
svmem(total=1963151360, available=1227665408, percent=37.5, used=519286784, free=241831936, active=1094524928, inactive=357851136, buffers=253251584, cached=948781056, shared=21745664, slab=229535744)
  • total: 总的物理内存
  • available:不需要系统进入交换分区,可以立即分给线程的内存,这个值代表了系统可使用的内存情况
  • percent: 系统内存使用率,percent = (total-available)/total*100
  • used: 已使用的内存,注意:total- free不一定等于used.
  • free: 已准备好,但是还一点都没被使用的内存,注意:total- used不一定等于free

psutil.swap_memory()

返回系统swap内存的统计情况

>>> psutil.swap_memory()
sswap(total=2097147904L, used=886620160L, free=1210527744L, percent=42.3, sin=1050411008, sout=1906720768)

磁盘

psutil.disk_partitions(all=False)

以列表形式返回所有已挂载的分区情况,类似df命令,包含设备名,挂载点,文件系统类型等信息

>>> psutil.disk_partitions(all=False)
[sdiskpart(device='/dev/vda1', mountpoint='/', fstype='ext3', opts='rw,noatime,data=ordered'), 
 sdiskpart(device='/dev/vdb1', mountpoint='/home', fstype='ext4', opts='rw,relatime,data=ordered')]

psutil.disk_usage(path)

返回包含给定路径的分区的使用情况

>>> psutil.disk_usage('/home')
sdiskusage(total=52709421056, used=1384726528, free=48623616000, percent=2.8)

psutil.disk_io_counters(perdisk=False, nowrap=True)

返回系统磁盘读写统计情况

>>> psutil.disk_io_counters(perdisk=True, nowrap=True)
{'vdb1': sdiskio(read_count=53336, write_count=7290547, read_bytes=513448960, write_bytes=95220412416, read_time=437192, write_time=20082820, read_merged_count=11, write_merged_count=12784741, busy_time=13831456), 
 'vda1': sdiskio(read_count=391044, write_count=15935975, read_bytes=8349887488, write_bytes=174897152000, read_time=3647536, write_time=154992268, read_merged_count=46, write_merged_count=24664791, busy_time=27200168)}

网络

psutil.net_io_counters(pernic=False, nowrap=True)

返回系统网络使用情况

>>> psutil.net_io_counters(pernic=False, nowrap=True)
snetio(bytes_sent=11362773122, bytes_recv=26925013729, packets_sent=83217229, packets_recv=92233548, errin=0, errout=0, dropin=0, dropout=0)

psutil.net_if_addres()

>>> psutil.net_if_addrs()
{'lo': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1', ptp=None),
        snicaddr(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None),
        snicaddr(family=<AddressFamily.AF_LINK: 17>, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00', ptp=None)],
 'wlan0': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255', ptp=None),
           snicaddr(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None),
           snicaddr(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}

其他系统信息

psutil.boot_time()

返回从新纪元到系统启动时刻的秒数

>>> psutil.boot_time()
1510452254.0
>>> datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
'2017-11-12 10:04:14'

psutil.users()

返回登陆系统的用户数

>>> psutil.users()
[suser(name='ubuntu', terminal='pts/0', host='192.168.100.230', started=1525586688.0, pid=31658)]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值