python通过wmi获取windows下进程的信息

linux应该有很多方法可以获取进程的cpu和内存信息,但windows貌似之前接触的是psutil,后来查了一些资料发现wmi也能够获取进程的信息,但貌似效率不太高,应该可以做监控等性能要求不太高的情况

下载wmi,这个网上很多方法和途径,我是用easyinstall来安装,这个不详细说明了

直接附上代码:

import wmi
from win32com.client import GetObject
import win32gui,time
mywmi = GetObject("winmgmts:")
# allProcess = mywmi.ExecQuery("select * from Win32_Process")
# for i in allProcess:
#     pid = i.Properties_("ProcessID")
#     print pid

# network = mywmi.ExecQuery("select Processor, _Total, Processor Time from PerformanceCounter")
# print network
# for i in network:
#     print i.Properties_("Processor")

mywql= mywmi.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfProc_Process where PercentPrivilegedTime>10")

def getPrcessInfo(wql):
    while 1:

        for j in wql:
            #print j.Properties_("PercentPrivilegedTime").__int__()
            ##print j.Properties_("name").__str__()+" "+j.Properties_("IDProcess").__str__()+"  "+j.Properties_("PercentPrivilegedTime").__str__()
            if j.Properties_("name").__str__()!= "_Total" and j.Properties_("name").__str__()!="Idle":
                print j.Properties_("name")
                print j.Properties_("PercentPrivilegedTime").__int__()
                print j.Properties_("WorkingSet").__int__()
                time.sleep(1)
                #return 1
            #break

        ##print ":)"

getProcessInfo(mysql)

  编码方式停留在初学的基础上,后续需要改进,j.Properties_("属性")得出的是一个实例,所以需要转换成相应的格式;

详细的属性可以参考https://msdn.microsoft.com/en-us/library/aa394277(VS.85).aspx

个人感觉wmi功能挺强大的,能搞通的话,应该可以玩转windows(有点夸张了)

时间: 2024-11-02 03:03:53

python通过wmi获取windows下进程的信息的相关文章

安装python科学计算库 [windows下]

由于今天数据挖掘练习的缘故,需要安装一些常用的科学计算库,如耳熟能详的numpy,scipy,sklearn,matplotlib,seaborn等. 本机python 32位版本3.6,使用pip3安装相关库,看到知乎上要说换用anaconda(附带python和一些扩展库),再用conda工具安装没有的库,可以很好的解决依赖问题.由于我对Python的依赖关系的管理没有深入了解,只依赖于pip或者easy_install的使用,所以当遇到pip安装某个库失败时,就有些无措了. 解决方法如下:

< python音频库:Windows下pydub安装配置、过程出现的问题及常用API >

< python音频库:Windows下pydub安装配置.过程出现的问题及常用API > 背景 刚从B站上看过倒放挑战之后也想体验下,心血来潮一个晚上完成了基本的实现.其中倒放与播放部分使用了pydub这个音频库,十分快捷方便,但是它完整一套的配置让我还是踩了几个坑.特将其配置过程记录于此,方便大家. Windows10系统 < Pydub in Github > 安装Pydub Anaconda:打开Anaconda prompt,activate切换至工作环境下,键入pip

[C语言](二)01 获取Windows图形构件大小信息

SYSMETS.c #include <windows.h> #include "SYSMETS.H"//自定义的单元,所以用"",不是用<> //消息循环处理函数,Windows回调函数 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //Windows程序的入口函数 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevIn

python字符集分析,解决windows下FTPClient下载中文名称文件乱码

python中的中文编码一直以来都是一个极为头大的问题,经常抛出编码转换的异常,python中的str和unicode到底是一个什么东西呢?在python中提到unicode,一般指的是unicode对象,例如'哈哈'的unicode对象为u'\u54c8\u54c8',而str,是一个字节数组,这个字节数组表示的是对unicode对象编码(可以是utf-8.gbk.cp936.GB2312)后的存储的格式.这里它仅仅是一个字节流,没有其它的含义,如果你想使这个字节流显示的内容有意义,就必须用正

windows下进程与线程剖析

进程与线程的解析 进程:一个正在运行的程序的实例,由两部分组成: 1.一个内核对象,操作系统用它来管理进程.内核对象也是系统保存进程统计信息的地方. 2.一个地址空间,其中包含所有可执行文件或DLL模块的代码和数据.此外,它还包含动态内存分配,比如线程堆栈和堆的分配. 进程要做任何事情,都必须让一个线程在它的上下文中运行.该线程负责执行进程地址空间包含的代码.事实上,一个进程可以有多个线程,所有线程都在进程的地 址空间中"同时"执行代码.为此,每个线程都有它自己的一组CPU寄存器和它自

操作系统 - unix和windows下进程异同

在UNIX系统中,仅仅有一个系统调用能够用来创建新进程:fork.这个系统调用会创建一个与调用进程相同的副本. 在调用了fork之后.这两个进程(父进程和子进程)拥有相同的存储映像.相同的环境字符串和相同的打开文件. 这就是所有情形.同城,子进程接着运行execve或一个类似的系统调用,以改动其存储映像并运行一个新的程序.比如,当一个用户在shell中键入命令时,shell就创建一个子进程,然后,这个子进程运行sort. 之所以要安排两步建立进程,是为了在fork之后但在execve之前同意该子

Python CGI apache在windows下安装

1.首先去下载apache (http://httpd.apache.org/download.cgi)(Apache VC15 binaries and modules download) 2.下载好后去解压,解压好后把apache24目录和ReadMe.txt放到某个盘的(你喜欢装在哪个盘就哪个盘,没有影响)根目录下(我也不知道为什么,初次安装放在次目录下问题多多,一堆报错,我是安装在d盘的) 3.以管理员身份打开命令行窗口,去到bin目录下,输入命令 httpd.exe -k instal

获取windows可执行文件的version信息(版本号)

之前在msdn上Version Information看到文件版本信息的介绍,看着整体比较复杂,就一直没做.现在需要获取ocx文件的版本号,所以查找了下相关资料,比较有用的就是VS_FIXEDFILEINFO结构,获取这个参数就基本可以完成任务了. 代码如下: 1 //typedef struct tagVS_FIXEDFILEINFO 2 //{ 3 // DWORD dwSignature; /* e.g. 0xfeef04bd */ 4 // DWORD dwStrucVersion; /

Python与机器学习:windows下机器学习环境的搭建

我的电脑系统是win7 64 位 安装了python-2.7.12.msi 和python-3.4.2.amd64.msi, ========注意:========= 同时都配置好了环境变量path  配置哪个版本的环境就选择相应的配置 (两者不能同时存在,否则用不了pip或easy_install) ....;C:\Python27\Scripts;C:\Python27; 或C:\Python34\Scripts;C:\Python34;....... |------------------