Python获取系统基础信息psutil模块使用

2024-02-05 11:08

本文主要是介绍Python获取系统基础信息psutil模块使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

查看原文:http://www.sijitao.net/2043.html
通常linux系统的基础信息如内存、cpu等这些都是通过shell来获取。不过python的psutil模块把shell查看系统基础信息的功能都包装了下,使用更加简单,功能丰富。

psutil安装

地址:https://pypi.python.org/pypi?:action=display&name=psutil

下载源码后安装

wget https://pypi.python.org/packages/source/p/psutil/psutil-3.2.1.tar.gz --no-check-certificate
tar zxvf psutil-3.2.1.tar.gz 
cd psutil-3.2.1
sudo python setup.py install

获取系统基本信息的使用

CPU信息

linux系统中的cpu主要有几个部分组成,可以参考之前《Linux系统查看CPU使用率的几个命令》这篇文章。

使用cpu_times方法获取cpu的完整信息,如下所示。

>>> psutil.cpu_times()
scputimes(user=406604.31, nice=9686.8199999999997, system=664003.88, idle=19646386.609999999, iowait=715788.23999999999, irq=165388.04000000001, softirq=47710.230000000003, steal=0.0, guest=0.0)

获取单个数据,如用户的cpu时间

>>> psutil.cpu_times().user
406604.59999999998

获取cpu物理和逻辑个数,默认logical值为True 。

>>> psutil.cpu_count()
4
>>> psutil.cpu_count(logical=False)
2
内存信息

内存信息的获取主要使用virtual_memory方法。swap使用就用swap_memory方法。

>>> mem=psutil.virtual_memory()
>>> mem
svmem(total=1047543808L, available=717537280L, percent=31.5, used=1018589184L, free=28954624L, active=441827328, inactive=449007616, buffers=218214400L, cached=470368256)
>>> mem.total
1047543808L
>>> print (mem.total/8/1024)
127874
>>> print (mem.total/1024/1024) 
999

其中percent表示实际已经使用的内存占比,即(1047543808-717537280)/1047543808*100% 。available表示还可以使用的内存。

磁盘信息

磁盘信息主要有两部分,一个是磁盘的利用率,一个是io,他们分别可以通过disk_usage和disk_io_counters方法获取。

如下先获取分区信息,然后看下根分区的使用情况。

>>> psutil.disk_partitions()
[sdiskpart(device='/dev/mapper/zhang-root', mountpoint='/', fstype='ext4', opts='rw,errors=remount-ro'), sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='ext2', opts='rw')]
>>> psutil.disk_usage('/') 
sdiskusage(total=43785617408, used=15221456896, free=26339921920, percent=34.799999999999997)
>>>

默认disk_io_counters方法获取的是硬盘总的io数和读写信息,如果需要获取单个分区的io和读写信息加上"perdisk=True"参数。

>>> psutil.disk_io_counters()
sdiskio(read_count=11722336, write_count=136652693, read_bytes=263345571840, write_bytes=848806625280, read_time=66298670, write_time=2741668730)
>>> psutil.disk_io_counters(perdisk=True)
{'dm-1': sdiskio(read_count=71443, write_count=102745, read_bytes=292630528, write_bytes=420843520, read_time=684480, write_time=44471270), 'sda5': sdiskio(read_count=5305289, write_count=29095024, read_bytes=131662169088, write_bytes=424404525056, read_time=28226110, write_time=641655840), 'sda2': sdiskio(read_count=2, write_count=0, read_bytes=2048, write_bytes=0, read_time=30, write_time=0), 'dm-0': sdiskio(read_count=6343081, write_count=107455225, read_bytes=131369276416, write_bytes=423983681536, read_time=37361670, write_time=2055542540), 'sda1': sdiskio(read_count=2521, write_count=166, read_bytes=21493760, write_bytes=172032, read_time=26380, write_time=1810)}
>>>
网络信息

网络io和磁盘io使用方法差不多,主要使用net_io_counters方法,如果需要获取单个网卡的io信息,加上pernic=True参数。

>>> psutil.net_io_counters()
snetio(bytes_sent=470306251621, bytes_recv=504672135942, packets_sent=1231438305, packets_recv=1243021636, errin=0, errout=0, dropin=0, dropout=0)
>>> psutil.net_io_counters(pernic=True)
{'lo': snetio(bytes_sent=53311613686, bytes_recv=53311613686, packets_sent=121127899, packets_recv=121127899, errin=0, errout=0, dropin=0, dropout=0), 'eth1': snetio(bytes_sent=209756860205, bytes_recv=193733233062, packets_sent=356636797, packets_recv=391137413, errin=0, errout=0, dropin=0, dropout=0), 'eth0': snetio(bytes_sent=207237886306, bytes_recv=257627387945, packets_sent=753674621, packets_recv=730757206, errin=0, errout=0, dropin=0, dropout=0)}
>>>

以上是psutil模块获取linux系统基础信息的几个方法,大概常用的数据就这些。当然其他用法还有很多,详情可以参考他的官方文档。

网址:http://pythonhosted.org/psutil/

 

这篇关于Python获取系统基础信息psutil模块使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/680724

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.