psutil模块
python模块之psutil
一、psutil模块
1、介绍
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等操作系统.
2、安装psutil模块
- CentOS安装psutil包:
- python版本:3.5
- wget https://pypi.python.org/packages/source/p/psutil/psutil-3.2.1.tar.gz --no-check-certificate
- tar zxvf psutil-3.2..tar.gz
- cd psutil-3.2.
- python setup.py install
- Windos安装psutil包:
- D:\python35\Scripts>pip3.exe install psutil
- Collecting psutil
- Downloading psutil-5.3.-cp35-cp35m-win_amd64.whl (215kB)
- % |████████████████████████████████| 225kB 84kB/s
- Installing collected packages: psutil
- Successfully installed psutil-5.3.
二、.获取系统基本信息的使用
1、CPU信息
- 使用cpu_times方法获取cpu的完整信息,如下所示。
- >>> psutil.cpu_times()
- scputimes(user=650613.02, nice=22.14, system=154916.5, idle=16702285.26, iowait=68894.55, irq=3.38, softirq=7075.65, steal=0.0, guest=0.0)
- >>>
- 获取单个数据,如用户的cpu时间或io等待时间,如下所示:
- >>> psutil.cpu_times().user
- 650617.11
- >>> psutil.cpu_times().iowait
- 68894.63
- >>>
- 获取cpu逻辑和物理个数,默认logical值为True 。
- #CPU逻辑个数
- >>> psutil.cpu_count()
- #CPU物理个数
- >>> psutil.cpu_count(logical=False)
- >>>
- 获取cpu的使用率:
- >>> psutil.cpu_percent()
- 2.5
- >>> psutil.cpu_percent()
- 2.5
- >>>
2、内存信息
- 内存信息的获取主要使用virtual_memory方法。swap就是使用swap_memory方法。
- >>> mem = psutil.virtual_memory()
- >>> mem
- svmem(total=, available=, percent=73.5, used=, free=, active=, inactive=, buffers=, cached=)
- >>> mem.total
- >>> mem.used
- >>> mem.free
- >>> print(mem.total//)
- 3832.4375
- >>>
- 其中percent表示实际已经使用的内存占比,即(-)/*% 。available表示还可以使用的内存。
3、磁盘信息
- 磁盘信息主要有两部分,一个是磁盘的利用率,一个是io,他们分别可以通过disk_usage和disk_io_counters方法获取。
- 如下先获取分区信息,然后看下根分区的使用情况:
- >>> psutil.disk_partitions()
- [sdiskpart(device='/dev/mapper/root', mountpoint='/', fstype='ext4', opts='rw,errors=remount-ro'), sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='ext2', opts='rw')]
- >>> psutil.disk_usage('/')
- sdiskusage(total=, used=, free=, percent=40.8)
- >>>
- 默认disk_io_counters方法获取的是硬盘总的io数和读写信息,如果需要获取单个分区的io和读写信息加上"perdisk=True"参数。
- >>> psutil.disk_io_counters()
- sdiskio(read_count=, write_count=, read_bytes=, write_bytes=, read_time=, write_time=)
- >>> psutil.disk_io_counters(perdisk=True)
- {'vdb1': sdiskio(read_count=, write_count=, read_bytes=, write_bytes=, read_time=, write_time=), 'vda1': sdiskio(read_count=, write_count=, read_bytes=, write_bytes=, read_time=, write_time=)}
- >>>
4、网络信息
- 网络io和磁盘io使用方法差不多,主要使用net_io_counters方法,如果需要获取单个网卡的io信息,加上pernic=True参数。
- #获取网络总的io情况
- >>>
- >>> psutil.net_io_counters()
- snetio(bytes_sent=, bytes_recv=, packets_sent=, packets_recv=, errin=, errout=, dropin=, dropout=)
- #获取网卡的io情况
- >>>
- >>> psutil.net_io_counters(pernic=True)
- {'lo': snetio(bytes_sent=, bytes_recv=, packets_sent=, packets_recv=, errin=, errout=, dropin=, dropout=), 'eth0': snetio(bytes_sent=, bytes_recv=, packets_sent=, packets_recv=, errin=, errout=, dropin=, dropout=)}
5、其他系统信息
5.1、获取开机时间
- #以linux时间格式返回,可以使用时间戳转换
- >>> psutil.boot_time()
- 1496647567.0
- #转换成自然时间格式
- >>> psutil.boot_time()
- 1496647567.0
- >>> datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S")
- '2017-06-05 15: 26: 07'
- >>>
5.2、查看系统全部进程
- >>> psutil.pids()
- [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]
5.3、查看单个进程
- p = psutil.Process()
- p.name() #进程名
- p.exe() #进程的bin路径
- p.cwd() #进程的工作目录绝对路径
- p.status() #进程状态
- p.create_time() #进程创建时间
- p.uids() #进程uid信息
- p.gids() #进程的gid信息
- p.cpu_times() #进程的cpu时间信息,包括user,system两个cpu信息
- p.cpu_affinity() #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就好
- p.memory_percent() #进程内存利用率
- p.memory_info() #进程内存rss,vms信息
- p.io_counters() #进程的IO信息,包括读写IO数字及参数
- p.connectios() #返回进程列表
- p.num_threads() #进程开启的线程数
- 听过psutil的Popen方法启动应用程序,可以跟踪程序的相关信息
- from subprocess import PIPE
- p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE)
- p.name()
- p.username()
6、例子
查看系统硬件
- #!/usr/bin/env python
- #coding:utf-
- import psutil
- import datetime
- import time
- # 当前时间
- now_time = time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))
- print(now_time)
- # 查看cpu物理个数的信息
- print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False))
- #CPU的使用率
- cpu = (str(psutil.cpu_percent())) + '%'
- print(u"cup使用率: %s" % cpu)
- #查看内存信息,剩余内存.free 总共.total
- #round()函数方法为返回浮点数x的四舍五入值。
- free = str(round(psutil.virtual_memory().free / (1024.0 * 1024.0 * 1024.0), ))
- total = str(round(psutil.virtual_memory().total / (1024.0 * 1024.0 * 1024.0), ))
- memory = int(psutil.virtual_memory().total - psutil.virtual_memory().free) / float(psutil.virtual_memory().total)
- print(u"物理内存: %s G" % total)
- print(u"剩余物理内存: %s G" % free)
- print(u"物理内存使用率: %s %%" % int(memory * ))
- # 系统启动时间
- print(u"系统启动时间: %s" % datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S"))
- # 系统用户
- users_count = len(psutil.users())
- #
- # >>> for u in psutil.users():
- # ... print(u)
- # ...
- # suser(name='root', terminal='pts/0', host='61.135.18.162', started=1505483904.0)
- # suser(name='root', terminal='pts/5', host='61.135.18.162', started=1505469056.0)
- # >>> u.name
- # 'root'
- # >>> u.terminal
- # 'pts/5'
- # >>> u.host
- # '61.135.18.162'
- # >>> u.started
- # 1505469056.0
- # >>>
- users_list = ",".join([u.name for u in psutil.users()])
- print(u"当前有%s个用户,分别是 %s" % (users_count, users_list))
- #网卡,可以得到网卡属性,连接数,当前流量等信息
- net = psutil.net_io_counters()
- bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / / )
- bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / / )
- print(u"网卡接收流量 %s 网卡发送流量 %s" % (bytes_rcvd, bytes_sent))
- io = psutil.disk_partitions()
- # print(io)
- # print("io[-1]为",io[-])
- #del io[-]
- print('-----------------------------磁盘信息---------------------------------------')
- print("系统磁盘信息:" + str(io))
- for i in io:
- o = psutil.disk_usage(i.device)
- print("总容量:" + str(int(o.total / (1024.0 * 1024.0 * 1024.0))) + "G")
- print("已用容量:" + str(int(o.used / (1024.0 * 1024.0 * 1024.0))) + "G")
- print("可用容量:" + str(int(o.free / (1024.0 * 1024.0 * 1024.0))) + "G")
- print('-----------------------------进程信息-------------------------------------')
- # 查看系统全部进程
- for pnum in psutil.pids():
- p = psutil.Process(pnum)
- print(u"进程名 %-20s 内存利用率 %-18s 进程状态 %-10s 创建时间 %-10s " \
- % (p.name(), p.memory_percent(), p.status(), p.create_time()))
以上是psutil模块获取linux系统基础信息的几个方法,常用的数据就这些。当然其他用法还有很多,详情可以参考官方文档。
psutil模块的更多相关文章
- 15.python笔记之psutil模块
一.psutil模块 1. psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等) ...
- psutil模块安装指南(win与linux)
1.windows下psutil模块安装: https://pypi.python.org/packages/3.4/p/psutil/ 下载符合版本的软件包下载,然后安装即可. 2.ubuntu下载 ...
- CentOS7--64安装python的psutil模块
1.以root身份登陆CentOS依次 执行以下命令: wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.g ...
- Python 中psutil 模块的安装
第一步下载psutil 的安装包 网址:https://pypi.python.org 第二步解压 .tar.gz cd psutil- 第三步安装: python setup.py build py ...
- 自动化之路 python psutil模块 收集硬件信息
一.psutil模块 1. psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控,分析和限制系统资源及进程的管理.它实现了 ...
- [Python Study Notes]psutil模块
系统性能信息模块psutil psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(CPU,内存,磁盘,网络等)信息,主要应用于系统监控,分析和限制系统资源及进程的管理,它实现了同等 ...
- python之psutil模块(获取系统性能数据)
psutil模块 1.介绍 psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等) ...
- python之psutil模块(获取系统性能信息(CPU,内存,磁盘,网络)
一.psutil模块 1. psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等) ...
- python笔记之psutil模块
收集教程 http://www.cnblogs.com/xiao1/p/6164204.html 实战教程 安装psutil模块 pip2 install psutil 实战代码 #encoding= ...
随机推荐
- 显示定位方法,提取中间text 封装成函数的方法
tager='工作台' element=WebDriverWait(self.dr,15,0.1).until( eval("lambda x: x."+'find_element ...
- Java学习——用户电话输入显示
编写程序:在窗口中添加组件,产生如下图形化界面:当用户输入用户名和电话后,点击显示按钮后,按下图格式显示. package cys; import java.awt.*; import java.aw ...
- Java学习——Applet画8个同心圆
import java.awt.*; import java.applet.*; public class GUI3 extends Applet{ public void paint(Graphic ...
- [转][xml]SQL转义
SQL语句包含">"和"<"时,在PL/SQL中可以正常运行,但是放在XML中,编译报错,这是因为在XML文档中的所有文本都会被解析器解析,文本内容 ...
- 1127 ZigZagging on a Tree (30 分)
1127 ZigZagging on a Tree (30 分) Suppose that all the keys in a binary tree are distinct positive in ...
- 为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容
在开发时,会遇到是要HTML来做UI,是要js与C++进行交互. 在加载完页面后,一些电脑中会出现“为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容”(用IE打开,自 ...
- Hash算法原理的简单分析
哈希计算就是努力的把比较大的数据存放到相对较小的空间中.最常见的哈希算法是取模法.下面简单讲讲取模法的计算过程.比如:数组的长度是5.这时有一个数据是6.那么如何把这个6存放到长度只有5的数组中呢.按 ...
- 跨域验证cookie与缓存控制
1. 是否能跨域完全取决于浏览器控制,浏览器可以直接拒绝发送跨域请求(服务器根本收不到),也可以发送给服务器等接收到返回信息后决定是否让它被读取. 2. 服务器并不能辨别请求是从哪个源发过来的,只有在 ...
- hadoop 分布式机群搭建
描述:鉴于本地电脑内存限制,采用三台虚机安装此环境. 主机名,分别为master.slave1.slave2. zookeeper分别安装这三台机器上,master和slave1做主从备份, slav ...
- admin源码解析以及仿照admin设计stark组件
---恢复内容开始--- admin源码解析 一 启动:每个APP下的apps.py文件中. 首先执行每个APP下的admin.py 文件. def autodiscover(): autodisco ...