python监控软件内存、cpu和GDI

目录

  • 前言
  • 代码

前言

最近做软件测试需要监控软件内存、cpu和GDI对象数,用psutil库可以很方便的实现监控内存和CPU,但是GDI好像还不行,最后来的win32api来调用的Windows API接口来实现GDI监控的,在此做个记录。

代码

import psutil
import os
import pandas as pd
import time
import win32gui
import win32process
import win32con
import win32api

# 定义需要监控的进程名称
process_name = "xxx.exe"

# 定义记录数据的文件名
data_file = "monitor_data.xlsx"


# 获取进程信息并记录到Excel文件中
def monitor_process(process_name, data_file ):
    process_id = get_process_id(process_name)
    if process_id is None:
        print("未找到进程")
        return
    process = psutil.Process(process_id)
    cpu_percent = process.cpu_percent(interval=None)
    mem_info = process.memory_info()
    commit_size = mem_info.vms / 1024 / 1024  # 转换为MB
    # GDI
    Py_process = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, False, process_id)
    gdi_objects = win32process.GetGuiResources(Py_process, win32con.GR_GDIOBJECTS)
    data = {"Time": [datetime.now().strftime("%Y-%m-%d %H:%M:%S")], "CPU": [cpu_percent],
            "Memory": [mem_info.rss / 1024 / 1024], "Commit Size": [commit_size], "GDI Objects": [gdi_objects]}
    df = pd.DataFrame(data)
    if os.path.exists(data_file):
        df_old = pd.read_excel(data_file, engine='openpyxl', index_col=0)
        df_new = pd.concat([df_old, df])
        df_new.to_excel(data_file)
    else:
        df.to_excel(data_file)

你可能感兴趣的:(python笔记,python,资源监控)