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时间

相关文章
|
3月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
3月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
492 7
|
3月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
3月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
3月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
3月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
396 0
|
存储 Linux 索引
python基础学习笔记
服务器 1.ftp服务器         FTP是FileTransferProtocol(文件传输协议)的英文简称,中文名称为“文传协议”。
1785 0

推荐镜像

更多