使用python获取CPU和内存信息的思路与实现(linux系统)

From: http://blog.csdn.net/preterhuman_peak/article/details/40649229

 

linux里一切皆为文件,在linux/unix的根目录下,有个/proc目录,这个/proc 是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the fly)改变设置(通过改变内核参数)。与其他文件系统不同,/proc 存在于内存而不是硬盘中。proc 文件系统提供的信息如下:

•进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,可以找到 cmdline、mem、root、stat、statm,以及 status。某些信息只有超级用户可见,例如进程根目录。每一个单独含有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程信息,其用处就是从进程中获取命令行信息。
•系统信息:如果需要了解整个系统信息中也可以从/proc/stat 中获得,其中包括 CPU 占用情况、磁盘空间、内存对换、中断等。
•CPU 信息:利用/proc/CPUinfo 文件可以获得中央处理器的当前准确信息。
•负载信息:/proc/loadavg 文件包含系统负载信息。
•系统内存信息:/proc/meminfo 文件包含系统内存的详细信息,其中显示物理内存的数量、可用交换空间的数量,以及空闲内存的数量等。

这样,你可以通过cat 命令查看相关信息:

processor : 0
vendor_id : GenuineIntel
cpu family : 6
model  : 58
model name : Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
stepping : 9
microcode : 0x15
cpu MHz  : 1200.000
cache size : 3072 KB
physical id : 0
siblings : 4
core id  : 0
cpu cores : 2
apicid  : 0

——————————————————————

MemTotal:        3593316 kB
MemFree:         2145916 kB
Buffers:           93372 kB
Cached:           684864 kB
SwapCached:            0 kB
Active:           706564 kB
Inactive:         554052 kB
Active(anon):     483996 kB
Inactive(anon):   178388 kB
Active(file):     222568 kB
Inactive(file):   375664 kB
————————————————————————————————

下面介绍如何通过python编程的方式获取需求的信息:
#! /usr/bin/env python
#Filename:CPU1.py

from __future__ import print_function
from collections import OrderedDict
import pprint

def CPUinfo():
    '''Return the info in /proc/cpuinfo
    as a dirctionary in the follow format:
    CPU_info['proc0']={...}
    CPU_info['proc1']={...}
    '''

    CPUinfo=OrderedDict()
    procinfo=OrderedDict()

    nprocs = 0
    with open('/proc/cpuinfo') as f:
        for line in f:
            if not line.strip():
                #end of one processor
                CPUinfo['proc%s' % nprocs]=procinfo
                nprocs = nprocs+1
                #Reset
                procinfo=OrderedDict()
            else:
                if len(line.split(':')) == 2:
                    procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()
                else:
                    procinfo[line.split(':')[0].strip()] = ''
    return CPUinfo

if __name__ == '__main__':
    CPUinfo = CPUinfo()
    for processor in CPUinfo.keys():
        print('CPUinfo[{0}]={1}'.format(processor,CPUinfo[processor]['model name']))

运行如下:
CPUinfo[proc0]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
CPUinfo[proc1]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
CPUinfo[proc2]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
CPUinfo[proc3]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
获取内存信息:
#! /usr/bin/env python
#Filename:meminfo.py

from __future__ import print_function
from collections import OrderedDict

def meminfo():
    '''return the info of /proc/meminfo
    as a dictionary
    '''
    meminfo = OrderedDict()

    with open('/proc/meminfo') as f:
        for line in f:
            meminfo[line.split(':')[0]] = line.split(':')[1].strip()
    return meminfo


if __name__ == '__main__':
    meminfo = meminfo()

    print("Total memory:{0}".format(meminfo['MemTotal']))
    print("Free memory:{0}".format(meminfo['MemFree']))

结果如下:

Total memory:3593316 kB
Free memory:2113712 kB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni.request接口封装;小程序uni-app接口封装

另一篇请求接口简单封装在api下的index.js 本片资源下载地址 本片封装了post get put请求,重点在request.js文件 1.新增四个文件 2.根目录下的utils下的request.js封装uni.request()请求 注意 :需要根据自己接口的 statusCode 状态码 、数据状态码…

php 功能函数集

1.获取页面闭合带id标签数据 View Code 1 <?php2 header("Content-type: text/html; charsetutf-8"); 3 /**4 * $tag_id HTML tag_id like id"abc"5 * $url web url6 * $tag HTML tag7 * $data HTML data if…

JS prototype作用

prototype可查看原型属性&#xff0c;还可对原型添加属性或方法 function Car(name) {this.name name;this.run function () {console.log(this.heightcm this.name is run!)}}var dazhong new Car(dazhong);Car.prototype.height null; //给对象添加新属性…

高性能并发TCP网络服务-IOCP框架修正VC2008版本

From: http://blog.csdn.net/lsfa1234/article/details/6223635 高性能并发TCP网络服务IOCP框架修正VC2008版本 从Source Code里可发现&#xff0c;此工程整合的epoll&#xff0c;iocp及kqueue三种模型&#xff0c;应该是非常有用的一个东东&#xff08;如果ACE能够把它的那些…

解决uni-app小程序图片转base64;微信小程序上传图片转base64;

base64转微信小程序图片 点击看这篇 以下是小程序图片转base64&#xff1a; uni.chooseImage({count: 6, //默认9sizeType: [original, compressed], //可以指定是原图还是压缩图&#xff0c;默认二者都有sourceType: [album], //从相册选择success: function (res) {console…

java中byte转换int时为何与0xff进行与运算

另一篇分析如下&#xff1a; byte为什么要与上0xff&#xff1f; 在剖析该问题前请看如下代码 public static String bytes2HexString(byte[] b) {String ret "";for (int i 0; i < b.length; i) {String hex Integer.toHexString(b[ i ] & 0xFF);if (hex.l…

element 增加自由验证

<el-form-item label"社会统一信用代码" prop"socialCode"><el-input v-model"ruleForm.socialCode"></el-input></el-form-item> 主要是validator返回的是对象 rules: {socialCode: [ //社会统一信用代码{requir…

ADempiere 360LTS 地址(Address)的中国格式定制

地址(Address)的中国格式定制AD里面设置合作伙伴&#xff0c;仓库等需要输入地址的地方&#xff0c;目前都是按照美国的习惯&#xff0c;即使国家选择了中国&#xff0c;还是不符合国内习惯&#xff0c;下面通过配置可使地址按照&#xff1a;省、市、详细地址的格式显示1) 国家…

git 配置免密登陆

SSH免密码登录配置 注意&#xff1a;这些命令需要在git bash here中敲 注意先配置好账户名和邮箱 # git config user.name zhangsan # git config user.email zhangsanqq.com # 使用–global参数&#xff0c;配置全局的用户名和邮箱&#xff0c;只需要配置一次即可。推荐配置…

ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL

ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代&#xff0c;我们不得不做一些东西来讨好爬虫&#xff0c;进而提示网站的排名来博得一个看得过去的流量。 URL重写与优化就是搜索引擎优化的手段之一。 假如某手机网站(基于AS…

js splice

splice(删除数组第几个,删除几个数据) splice(从第几个新增,如果设置为 0&#xff0c;则不会删除项目。,新增的对象)

PHP autoload实践

本文目的 本文简要的描述了PHP提供的autoload机制&#xff0c;以及在scake中使用实践。用于减少不必要的文件包含&#xff0c;提高php系统性能。 什么是__autoload php是脚本语言&#xff0c;不同于c只需要编译一次&#xff0c;php每次执行过程中都需要编译&#xff0c;所以…

mac无法ssh localhost

From: http://www.2cto.com/os/201203/123274.html mac 无法ssh localhost&#xff0c;错误提示&#xff1a;bash: /usr/local/bin/ssh_session: Permission denied 在网上找了很久也没有找到解决方案&#xff0c;最后根据提示自己摸索如下&#xff1a; 1.编辑/etc/sshd_confi…

文件加密及解密openssl

Openssl是一个开源的用以实现SSL协议的产品&#xff0c;它主要包括了三个部分&#xff1a;密码算法库、应用程序、SSL协议库。Openssl实现了SSL协议所需要的大多数算法。 下面我将单介绍使用Openssl进行文件的对称加密操作。 一、Openssl支持的加密算法有&#xff1a; -aes-128…

el-select回显

<el-select style"width:162px;" change"aaa" v-model"searchObj.id" placeholder"请选择"><el-option v-for"item in optionsId" :key"item.value" :label"item.value" :value"item.lab…

i标签content属性输入空白

content: \20; 表示里面有值&#xff0c;你可以随便操作了

Mac OS X下查看CPU信息

From: http://forum.51nb.com/tid698668 在终端输入&#xff1a;sysctl -a | grep ".cpu." 以下是我的电脑的输出信息: hw.ncpu: 8 hw.activecpu: 8 hw.physicalcpu: 4 hw.physicalcpu_max: 4 hw.logicalcpu: 8 hw.logicalcpu_max: 8 hw.cputype: 7 hw.cpusubtype:…

MS SQLSERVER 各种乱七八糟

2019独角兽企业重金招聘Python工程师标准>>> 这个是看完了sql语法的一点个人练手&#xff0c;没什么价值&#xff0c;权且当做记录 select employee_id,dept_code,last_name,manager_id from l_employees where last_name like %e%--%代表任意字符串 order by dept_…

第二阶段团队项目冲刺第三天

1.&#xff08;昨天干了什么&#xff09; 昨天基本将我们网站的框架搭建起来了&#xff0c;但是还是有很多的不完善&#xff0c;并没有达到我想要的效果。 2.&#xff08;今天准备干什么&#xff09; 今天计划完善我们的网站框架&#xff0c;添加一些一般网站都有的按钮、快捷方…

uni-app阻止事件冒泡

<!-- #ifdef MP-WEIXIN --><uni-icons v-if"key_word" tap.stop"closeInput(e)" class"input-uni-icon" type"closeempty" size"22" color"#ccc" /><!-- #endif -->注意&#xff1a;事件必须要…