Python学习笔记-系统性能信息模块psutil
系统性能信息模块 psutil:
参考:https://github.com/giampaolo/psutil
安装psutil模块:
1
|
[root@kurol ~] # python36 -m easy_install -i http://pypi.douban.com/simple/ psutil
|
1、获取系统性能信息:
1.1、获取CPU信息:
1
|
import psutil
|
获取CPU完整信息:
1
|
>>> psutil.cpu_times() scputimes(user = 60984.989999999998 , nice = 27.280000000000001 , system = 37572.639999999999 , idle = 6605536.1100000003 , iowait = 88463.169999999998 , irq = 0.53000000000000003 , softirq = 151.34 , steal = 0.0 , guest = 0.0 )
|
获取单项数据信息(用户user的CPU时间比):
1
|
>>> psutil.cpu_times().user 60985.209999999999
|
获取CPU的逻辑个数,默认logical=True:
1
|
>>> psutil.cpu_count() 1
|
获取CPU的物理个数:
1
|
>>> psutil.cpu_count(logical = False ) 1
|
1.2、获取内存信息:
1
|
In [ 1 ]: import psutil
|
获取内存完整信息:
1
|
In [ 2 ]: mem = psutil.virtual_memory() In [ 3 ]: mem Out[ 3 ]: svmem(total = 1044832256 , available = 357302272 , percent = 65.8 , used = 554692608 , free = 69898240 , active = 732987392 , inactive = 152940544 , buffers = 121593856 , cached = 298647552 , shared = 278528 )
|
获取内存总数:
1
|
In [ 4 ]: mem.total Out[ 4 ]: 1044832256
|
获取空闲内存数:
1
|
In [ 5 ]: mem.free Out[ 5 ]: 69898240
|
获取SWAP分区信息:
1
|
In [ 6 ]: psutil.swap_memory() Out[ 6 ]: sswap(total = 0 , used = 0 , free = 0 , percent = 0 , sin = 0 , sout = 0 )
|
1.3、获取磁盘信息:
获取磁盘完整信息:
1
|
In [ 7 ]: psutil.disk_partitions() Out[ 7 ]: [sdiskpart(device = '/dev/vda1' , mountpoint = '/' , fstype = 'ext3' , opts = 'rw,noatime,acl,user_xattr' )]
|
获取分区(参数)的使用方法
1
|
In [ 8 ]: psutil.disk_usage( '/' ) Out[ 8 ]: sdiskusage(total = 21136797696 , used = 3255058432 , free = 16808058880 , percent = 16.2 )
|
获取硬盘总的IO个数、读写信息
1
|
In [ 9 ]: psutil.disk_io_counters() Out[ 9 ]: sdiskio(read_count = 3147178 , write_count = 9242170 , read_bytes = 88165640192 , write_bytes = 293065478144 , read_time = 38673564 , write_time = 428113153 , read_merged_count = 41555 , write_merged_count = 62306169 , busy_time = 66422434 )
|
获取单个分区IO的个数、读写信息
1
|
In [ 10 ]: psutil.disk_io_counters(perdisk = True ) Out[ 10 ]: { 'vda1' : sdiskio(read_count = 3147178 , write_count = 9242205 , read_bytes = 88165640192 , write_bytes = 293065760768 , read_time = 38673564 , write_time = 428113482 , read_merged_count = 41555 , write_merged_count = 62306203 , busy_time = 66422585 )}
|
1.4、获取网络信息:
获取网络总的IO信息,默认pernic=False:
1
|
In [ 11 ]: psutil.net_io_counters() Out[ 11 ]: snetio(bytes_sent = 7783736637 , bytes_recv = 3332052537 , packets_sent = 17192882 , packets_recv = 26834127 , errin = 0 , errout = 0 , dropin = 0 , dropout = 0 )
|
获取pernic=True输出每个网络接口的IO信息:
1
|
In [ 12 ]: psutil.net_io_counters(pernic = False ) Out[ 12 ]: snetio(bytes_sent = 7783790463 , bytes_recv = 3332100618 , packets_sent = 17193280 , packets_recv = 26834627 , errin = 0 , errout = 0 , dropin = 0 , dropout = 0 )
|
1.5、获取其他系统信息:
获取当前登录系统的用户:
1
|
In [ 13 ]: psutil.users() Out[ 13 ]: [suser(name = 'root' , terminal = 'tty1' , host = ' ', started=1492050176.0), suser(name=' root ', terminal=' pts / 3 ', host=' 127.0 . 0.1 ', started=1496363136.0), suser(name=' root ', terminal=' pts / 5 ', host=' 127.0 . 0.1 ', started=1496386560.0), suser(name=' root ', terminal=' pts / 6 ', host=' 183.19 . 153.161 ', started=1496634240.0), suser(name=' root ', terminal=' pts / 7 ', host=' 183.19 . 153.161 ', started = 1496645632.0 )]
|
获取开机时间,以Linux时间戳格式返回:
1
|
In [ 14 ]: import psutil,datetime In [ 15 ]: psutil.boot_time() Out[ 15 ]: 1489823731.0
|
获取开机时间,转换成自然时间格式返回:
1
|
In [ 19 ]: datetime.datetime.fromtimestamp(psutil.boot_time()).strftime( "%Y-%m-%d %H:%M:%S" ) Out[ 19 ]: '2017-03-18 15:55:31'
|
2、系统进程管理方法:
psutil模块在获取进程信息方面也停工了很好的支持。
2.1、获取进程信息:
列出所有进程PID
1
|
In [ 10 ]: psutil.pids() Out[ 10 ]: [ 1 , 2 , ...... 32381 , 32407 ]
|
实例化一个Process对象,参数为一进程PID
1
|
In [ 11 ]: p = psutil.Process( 8843 )
|
获取进程名:
1
|
In [ 12 ]: p.name() Out[ 12 ]: 'httpd'
|
获取bin路径:
1
|
In [ 13 ]: p.exe() Out[ 13 ]: '/usr/sbin/httpd'
|
获取进程工作路径绝对路径:
1
|
In [ 14 ]: p.cwd() Out[ 14 ]: '/'
|
获取进程状态:
1
|
In [ 15 ]: p.status() Out[ 15 ]: 'sleeping'
|
获取进程创建时间,时间戳格式:
1
|
In [ 16 ]: p.create_time() Out[ 16 ]: 1492649546.17
|
获取uid信息:
1
|
In [ 17 ]: p.uids() Out[ 17 ]: puids(real = 0 , effective = 0 , saved = 0 )
|
获取gid信息:
1
|
In [ 18 ]: p.gids() Out[ 18 ]: pgids(real = 0 , effective = 0 , saved = 0 )
|
获取获取进程CPU亲和度,如要设置进程CPU亲和度,将CPU号作为参数即可
1
|
In [ 19 ]: p.cpu_affinity() Out[ 19 ]: [ 0 ]
|
获取CPU时间信息,包括user、system两个CPU时间
1
|
In [ 20 ]: p.cpu_times() Out[ 20 ]: pcputimes(user = 34.49 , system = 83.82 , children_user = 14932.68 , children_system = 1664.72 )
|
获取内存利用率
1
|
In [ 21 ]: p.memory_percent() Out[ 21 ]: 1.3066181601499103
|
获取进程内存rss、vms信息
1
|
In [ 22 ]: p.memory_info() Out[ 22 ]: pmem(rss = 13651968 , vms = 309997568 , shared = 7004160 , text = 344064 , lib = 0 , data = 5300224 , dirty = 0 )
|
获取IO信息,包括读写IO数及字节数
1
|
In [ 23 ]: p.io_counters() Out[ 23 ]: pio(read_count = 829019264 , write_count = 1492003 , read_bytes = 2957004800 , write_bytes = 4966547456 , read_chars = 6639699389927 , write_chars = 6973819808 )
|
获取打开进程socket的namedutples列表,包括fs、family、laddr等信息
1
|
In [ 24 ]: p.connections() Out[ 24 ]: [pconn(fd = 3 , family = <AddressFamily.AF_INET: 2 >, type = <SocketKind.SOCK_STREAM: 1 >, laddr = ( '0.0.0.0' , 80 ), raddr = (), status = 'LISTEN' )]
|
获取进程开启的线程数
1
|
In [ 26 ]: p.num_threads() Out[ 26 ]: 1
|
2.2、popen类的使用
psutil提供的popen类的作用:获取用户启动的应用程序进程信息,以便跟踪程序进程的运行状态。
1
|
In [ 1 ]: import psutil In [ 2 ]: from subprocess import PIPE
|
通过psutil的Popen方法启动的应用程序,可以跟踪该程序运行的所有相关信息。
1
|
In [ 3 ]: p = psutil.Popen([ "/usr/bin/python3" , "-c" , "print('hello')" ],stdout = PIPE) In [ 4 ]: p.name() Out[ 4 ]: 'python3' In [ 5 ]: p.username() Out[ 5 ]: 'root' In [ 6 ]: p.communicate() Out[ 6 ]: (b 'hello\n' , None ) In [ 7 ]: p.cpu_time() #得到进程运行的CPU时间
|
Python学习笔记-系统性能信息模块psutil相关推荐
- Python入门之——系统性能信息模块psutil
psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控,分析和限制系统资源及进程的管理.它实现了同等命令行工具提供的功能,如 ...
- Python学习笔记:第三方模块2
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- [python教程入门学习]python学习笔记(CMD执行文件并传入参数)
本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...
- python学习笔记之编写readConfig读写配置文件
python学习笔记之编写readConfig读写配置文件_weixin_34055910的博客-CSDN博客
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
- Python学习笔记一简介及安装配置
Python学习笔记一 参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e54 ...
- python学习笔记目录
人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...
- Python学习笔记(二):标准流与重定向
Python学习笔记(二):标准流与重定向 - SamWei - 博客园 Python学习笔记(二):标准流与重定向 Posted on 2012-02-19 22:36 SamWei 阅读(176) ...
- python 学习笔记 12 -- 写一个脚本获取城市天气信息
近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...
- python基本语法语句-python学习笔记:基本语法
原标题:python学习笔记:基本语法 缩进:必须使用4个空格来表示每级缩进,支持Tab字符 if语句,经常与else, elif(相当于else if) 配合使用. for语句,迭代器,依次处理迭代 ...
最新文章
- 连续地址数据(数组或者malloc的内存)作为函数参数
- 什么是SESSION?(二)
- 算法与数据结构 -- 栈与队列(四)
- html5图片自动翻转特效,CSS3带动态阴影效果的3D图片翻转特效
- 亚马逊aws 服务器删除_AWS推出Apache Airflow全托管工作流MWAA
- [蓝桥杯2018初赛]字母阵列-单向dfs
- 网站添加微信支付功能(小白填坑)
- 自学python 编程基础科学计算及数据分析 pdf_自学Python:编程基础、科学计算及数据分析...
- java 惊群效应,eureka的惊群效应
- ubuntu中彻底清空回收站
- 关于Axure原型在Axure share上的尺寸问题。
- python 中文字符串 编码转换_Python合集之Python字符串编码转换
- 二项分布的期望方差证明_二项分布与负二项分布的均值与方差推导
- as常用固定搭配_as固定短语搭配
- 微信字体调大后页面错乱问题
- 2021年济南市居民普通门诊统筹定点医疗机构名单
- git stage 暂存_git学习小计(二):常用命令、index暂存区
- Lecture5-3Effective number of hypotheses
- Java【并发】面试题
- vue生成pdf文件
热门文章
- cmake 添加asan功能
- 深入解析数据压缩算法
- 红帽linux系统内核版本7,如何查看Linux发行版内核版本及系统版本?
- 云计算是什么? 云计算入门必备的60条术语
- 3dmax和python做3d动画_3D动画和影视建模,用什么软件或者多个什么软件结合做比较好?...
- 3D 小游戏《飞跃地平线 Plus》开发分享
- day3-money enhances memory consolidation-but only for boring material
- 因为改 UOM conversion 导致库存数量和財务上的数据错误
- Comparator.comparing排序
- webworker应用场景_多线程编程开发应用场景