使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子


Posted in Python onApril 15, 2014

例子一:

Python用WMI模块获取windowns系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。

#!/usr/bin/env python 
# -*- coding: utf-8 -*- import wmi 
import os 
import sys 
import platform 
import time 
def sys_version():  
    c = wmi.WMI () 
    #获取操作系统版本 
    for sys in c.Win32_OperatingSystem(): 
        print "Version:%s" % sys.Caption.encode("UTF8"),"Vernum:%s" % sys.BuildNumber 
        print  sys.OSArchitecture.encode("UTF8")#系统是32位还是64位的 
        print sys.NumberOfProcesses #当前系统运行的进程总数
def cpu_mem(): 
    c = wmi.WMI ()        
    #CPU类型和内存 
    for processor in c.Win32_Processor(): 
        #print "Processor ID: %s" % processor.DeviceID 
        print "Process Name: %s" % processor.Name.strip() 
    for Memory in c.Win32_PhysicalMemory(): 
        print "Memory Capacity: %.fMB" %(int(Memory.Capacity)/1048576) 
def cpu_use(): 
    #5s取一次CPU的使用率 
    c = wmi.WMI() 
    while True: 
        for cpu in c.Win32_Processor(): 
             timestamp = time.strftime('%a, %d %b %Y %H:%M:%S', time.localtime()) 
             print '%s | Utilization: %s: %d %%' % (timestamp, cpu.DeviceID, cpu.LoadPercentage) 
             time.sleep(5)     
def disk(): 
    c = wmi.WMI ()    
    #获取硬盘分区 
    for physical_disk in c.Win32_DiskDrive (): 
        for partition in physical_disk.associators ("Win32_DiskDriveToDiskPartition"): 
            for logical_disk in partition.associators ("Win32_LogicalDiskToPartition"): 
                print physical_disk.Caption.encode("UTF8"), partition.Caption.encode("UTF8"), logical_disk.Caption 
    #获取硬盘使用百分情况 
    for disk in c.Win32_LogicalDisk (DriveType=3): 
        print disk.Caption, "%0.2f%% free" % (100.0 * long (disk.FreeSpace) / long (disk.Size)) 
def network(): 
    c = wmi.WMI ()     
    #获取MAC和IP地址 
    for interface in c.Win32_NetworkAdapterConfiguration (IPEnabled=1): 
        print "MAC: %s" % interface.MACAddress 
    for ip_address in interface.IPAddress: 
        print "ip_add: %s" % ip_address 
    print 
    #获取自启动程序的位置 
    for s in c.Win32_StartupCommand (): 
        print "[%s] %s <%s>" % (s.Location.encode("UTF8"), s.Caption.encode("UTF8"), s.Command.encode("UTF8"))  
     
    #获取当前运行的进程 
    for process in c.Win32_Process (): 
        print process.ProcessId, process.Name 
def main(): 
    sys_version() 
    #cpu_mem() 
    #disk() 
    #network() 
    #cpu_use() 
if __name__ == '__main__': 
    main() 
    print platform.system() 
    print platform.release() 
    print platform.version() 
    print platform.platform() 
    print platform.machine()

例子二:

由于我用到的不多,所以只获取的CPU、内存和硬盘,如果需要其它资源,请参照msdn。

import os
import win32api
import win32con
import wmi
import time
def getSysInfo(wmiService = None):
    result = {}
    if wmiService == None:
        wmiService = wmi.WMI()
    # cpu
    for cpu in wmiService.Win32_Processor():
        timestamp = time.strftime('%a, %d %b %Y %H:%M:%S', time.localtime())
        result['cpuPercent'] = cpu.loadPercentage
    # memory
    cs = wmiService.Win32_ComputerSystem()
    os = wmiService.Win32_OperatingSystem()
    result['memTotal'] = int(int(cs[0].TotalPhysicalMemory)/1024/1024)
    result['memFree'] = int(int(os[0].FreePhysicalMemory)/1024)
    #disk
    result['diskTotal'] = 0
    result['diskFree'] = 0
    for disk in wmiService.Win32_LogicalDisk(DriveType=3):
        result['diskTotal'] += int(disk.Size)
        result['diskFree'] += int(disk.FreeSpace)
    result['diskTotal'] = int(result['diskTotal']/1024/1024)
    result['diskFree'] = int(result['diskFree']/1024/1024)
    return result
if __name__ == '__main__':
    wmiService = wmi.WMI()
    while True:
        print getSysInfo(wmiService)
        time.sleep(3)

采用的wmi模块获取的,由于wmi初始化时占用系统资源太高,所以如果需要循环获取,请在循环体外面把wmi对象初始化好,然后传入函数里面,这样就不会产生CPU资源过高的情况。

Python 相关文章推荐
跟老齐学Python之编写类之一创建实例
Oct 11 Python
python使用正则表达式提取网页URL的方法
May 26 Python
Python类属性的延迟计算
Oct 22 Python
解决python线程卡死的问题
Feb 18 Python
python实现websocket的客户端压力测试
Jun 25 Python
Flask框架学习笔记之模板操作实例详解
Aug 15 Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 Python
python的列表List求均值和中位数实例
Mar 03 Python
jupyter notebook 实现matplotlib图动态刷新
Apr 22 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
python支持多继承吗
Jun 19 Python
python 读取.nii格式图像实例
Jul 01 Python
python中使用sys模板和logging模块获取行号和函数名的方法
Apr 15 #Python
python 动态获取当前运行的类名和函数名的方法
Apr 15 #Python
python使用百度翻译进行中翻英示例
Apr 14 #Python
python使用xauth方式登录饭否网然后发消息
Apr 11 #Python
python判断、获取一张图片主色调的2个实例
Apr 10 #Python
Python使用新浪微博API发送微博的例子
Apr 10 #Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 #Python
You might like
SONY ICF-SW7600的电路分析
2021/03/02 无线电
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
php中explode与split的区别介绍
2012/10/03 PHP
php用正则表达式匹配中文实例详解
2013/11/06 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
Document 对象的常用方法
2009/07/31 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
Python批量更改文件名的实现方法
2017/10/29 Python
django基于restframework的CBV封装详解
2019/08/08 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
Python如何批量生成和调用变量
2020/11/21 Python
实现向右循环移位
2014/07/31 面试题
小学庆六一活动方案
2014/02/28 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
2015大学生求职信范文
2015/03/20 职场文书
组织委员竞选稿
2015/11/21 职场文书
Spring中的@Transactional的工作原理
2022/06/05 Java/Android
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技