一、模块简介
模块功能:
基于python编写的系统监控模块,主要用于系统监控、分析、限制进程资源和运行进程管理。支持32位和64位的windows、linux、OSX, Sun Solaris, FreeBSD, OpenBSD and NetBSD。支持python2.6到3.6版本。
官方文档:
http://pythonhosted.org/psutil/
下载地址:
https://pypi.python.org/pypi/psutil/
安装方式:
官方介绍
https://github.com/giampaolo/psutil/blob/master/INSTALL.rst
pip安装
pip install psutil
yum安装
yum install python-psutil
二、获取CPU
psutil.cpu_times(percpu=False) 官方英文没看明白,自己理解的。返回的是一个指定元组,每个属性表示的是cpu在给定模式下花费的时间。然后返回的属性可用性因平台而不同。 percpu=False:显示总的占用 percpu=True:显示每个逻辑cpu核心的占用 返回结果: scputimes(user=1516.22, nice=0.62, system=701.74, idle=1273716.88, iowait=45.44, irq=0.0, softirq=0.74, steal=0.0, guest=0.0, guest_nice=0.0) user表示用户占用cpu时间 nice表示在用户模式下执行的被划分优先级的进程花费的时间,在linux上包括guest_nice的时间。 system表示系统内核占用cpu的时间 idle表示cpu空闲时间 iowait表示cpu等待i/o的时间 irq表示硬中断占用cpu的时间 softirq表示软中断占用时间 steal表示在虚拟化环境中运行的其他操作系统花费的时间 guest表示在linux内核的控制下为客户机操作系统运行虚拟cpu的时间 guest_nice 翻译没看明白,直接记录英文原文 (Linux 3.2.0+): time spent running a niced guest (virtual CPU for guest operating systems under the control of the Linux kernel) psutil.cpu_percent(interval=None, percpu=False) 以百分比的形式返回cpu的利用率 interval至少要设置等于0.1,如果不设置的话,获取的值有可能是无效的(具体原因看官网,英语不好,没有理解官网的意思) percpu=False:显示总的占用 percpu=True:显示每个逻辑cpu核心的占用 psutil.cpu_times_percent(interval=None, percpu=False) 返回参数和psutil.cpu_times相同,返回单位为百分比。返回了cpu在特定时间占用的百分比。 interval、percpu参数和psutil.cpu_percent使用方法相同 psutil.cpu_count(logical=True) 返回cpu的逻辑数量,如果logical=False则返回物理cpu个数。 psutil.cpu_stats() 上下文切换,中断次数等相关。 Return various CPU statistics as a named tuple: ● ctx_switches: number of context switches (voluntary + involuntary) since boot. ● interrupts: number of interrupts since boot. ● soft_interrupts: number of software interrupts since boot. Always set to 0 on Windows and SunOS. ● syscalls: number of system calls since boot. Always set to 0 on Linux. New in version 4.1.0. psutil.cpu_freq(percpu=False) Return CPU frequency as a nameduple including current, min and max frequencies expressed in Mhz. On Linux currentfrequency reports the real-time value, on all other platforms it represents the nominal “fixed” value. If percpu is True and the system supports per-cpu frequency retrieval (Linux only) a list of frequencies is returned for each CPU, if not, a list with a single element is returned. If min and max cannot be determined they are set to 0.
二、获取内存
方法:psutil.virtual_memory() 返回值: {'available': 3571601408, 'used': 114671616, 'cached': 256483328, 'percent': 10.2, 'free': 3388383232, 'active': 417320960, 'shared': 101220352, 'total': 3975925760, 'buffers': 216387584} 返回值单位:除了percent是百分比以为,其它都是字节。 total:总物理内存 available:可以立即给予进程的内存,不用系统进行交换。 used:目前使用的内存 cached:缓存 percent:使用百分比 buffers:缓存文件系统元数据 shared:共享内存 free:目前空闲的内存 active:当前正在使用或最近使用的内存,因此它在RAM中。 方法:psutil.swap_memory() 返回值:{'used': 0, 'percent': 0.0, 'free': 0, 'sout': 0, 'total': 0, 'sin': 0} 返回值单位:除了percent是百分比以为,其它都是字节。 total:总交换内存 used : 官方文档是,以字节为单位的交换内存。这里应该是已经使用的。不过我的云主机内存还够,所以没有去确认。 free:官方文档是,以字节为单位的空闲交换内存。这里应该是空闲的。 percent:使用百分比 sin和sout没看明白,有需要的,可以去看官方文档。