python获取windows进程cpu占用率_python获取某进程cpu的占用率windows下

1 #include"stdafx.h"2 #include"windows.h"3 #include4 #include5 #include6 #include7 8 #pragmacomment(lib, "psapi.lib")9 10 //定义获取CPU负载的结构体11 typedefstruct_THREAD_INFO12 {13 LARGE_INTEGER CreateTime;14 DWORD dwUnknown1;15 DWORD dwStartAddress;16 DWORD StartEIP;17 DWORD dwOwnerPID;18 DWORD dwThreadId;19 DWORD dwCurrentPriority;20 DWORD dwBasePriority;21 DWORD dwContextSwitches;22 DWORD Unknown;23 DWORD WaitReason;24 25 }THREADINFO,*PTHREADINFO;26 27 typedefstruct_UNICODE_STRING28 {29 USHORT Length;30 USHORT MaxLength;31 PWSTR Buffer;32 } UNICODE_STRING;33 34 typedefstruct_PROCESS_INFO35 {36 DWORD dwOffset;37 DWORD dwThreadsCount;38 DWORD dwUnused1[6];39 LARGE_INTEGER CreateTime;40 LARGE_INTEGER UserTime;41 LARGE_INTEGER KernelTime;42 UNICODE_STRING ProcessName;43 44 DWORD dwBasePriority;45 DWORD dwProcessID;46 DWORD dwParentProcessId;47 DWORD dwHandleCount;48 DWORD dwUnused3[2];49 50 DWORD dwVirtualBytesPeak;51 DWORD dwVirtualBytes;52 ULONG dwPageFaults;53 DWORD dwWorkingSetPeak;54 DWORD dwWorkingSet;55 DWORD dwQuotaPeakPagedPoolUsage;56 DWORD dwQuotaPagedPoolUsage;57 DWORD dwQuotaPeakNonPagedPoolUsage;58 DWORD dwQuotaNonPagedPoolUsage;59 DWORD dwPageFileUsage;60 DWORD dwPageFileUsagePeak;61 62 DWORD dCommitCharge;63 THREADINFO ThreadSysInfo[1];64 65 } PROCESSINFO,*PPROCESSINFO;66 67 68 #ifdef _MANAGED69 #pragmamanaged(push, off)70 #endif71 72 BOOL APIENTRY DllMain( HMODULE hModule,73 DWORD ul_reason_for_call,74 LPVOID lpReserved75 )76 {77 returnTRUE;78 }79 intGetProessCPU(DWORD dwProcessId)80 {81 intnCpuUsage=0;82 DWORD dwInfoSize=0x20000;83 PPROCESSINFO pProcessInfo;84 DWORD dwWorkingSet;85 long( __stdcall*NtQuerySystemInformation )( DWORD, PVOID, DWORD, DWORD);86 87 static__int64 nLastTotalProcessCPUUsage=0;88 static__int64 nLastCurrentProcessCPUUsage=0;89 __int64 nTotalProcessCPUUsage=0;90 __int64 nCurrentProcessCPUUsage=0;91 92 //93 PVOID pProcInfo=(PVOID)(newchar[dwInfoSize]);94 NtQuerySystemInformation=(long(__stdcall*)(DWORD,PVOID,DWORD,DWORD))GetProcAddress(GetModuleHandle(L"ntdll.dll"),"NtQuerySystemInformation");95 NtQuerySystemInformation(5, pProcInfo, dwInfoSize,0);96 pProcessInfo=(PPROCESSINFO)pProcInfo;97 do98 {99 nTotalProcessCPUUsage+=(__int64)pProcessInfo->KernelTime.QuadPart+(__int64)pProcessInfo->UserTime.QuadPart;100 if(pProcessInfo->dwProcessID==dwProcessId)101 {102 dwWorkingSet=pProcessInfo->dwWorkingSet;103 nCurrentProcessCPUUsage+=(__int64)pProcessInfo->KernelTime.QuadPart+(__int64)pProcessInfo->UserTime.QuadPart;104 }105 if(pProcessInfo->dwOffset==0)106 {107 break;108 }109 pProcessInfo=(PPROCESSINFO)((char*)pProcessInfo+pProcessInfo->dwOffset);110 }while(true);111 112 __int64 nTotalDelta=nTotalProcessCPUUsage-nLastTotalProcessCPUUsage;113 __int64 nCurrentDelta=nCurrentProcessCPUUsage-nLastCurrentProcessCPUUsage;114 if(nTotalDelta>0&&nCurrentDelta>=0)115 {116 nCpuUsage=int(100*nCurrentDelta/nTotalDelta);117 }118 119 nLastTotalProcessCPUUsage=nTotalProcessCPUUsage;120 nLastCurrentProcessCPUUsage=nCurrentProcessCPUUsage;121 delete[] pProcInfo;122 123 returnnCpuUsage;124 }125 126 BOOST_PYTHON_MODULE(cpudll)127 {128 usingnamespaceboost::python;129 def("GetProessCPU",GetProessCPU);130 }131 132 #ifdef _MANAGED133 #pragmamanaged(pop)134 #endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值