设计思路:
1、根据进程名获取进程ID
2、根据进程ID抓取CPU、内存、GPU数据,以列表形式返回
3、根据数据列表生成excel测试报告
# coding-utf-8
import sys
import time
import re
import psutil
import win32com.client
import xlsxwriter
from GPUtil import GPUtil
from numpy import mean
file_dir_path = sys.argv[1]
def ntid(process_name):
"""
根据进程名获取进程id
:param process_name: 进程名
:return:
"""
# time.sleep(2)
pids = psutil.pids()
for pid in pids:
if psutil.Process(pid).name() == process_name:
# print(pid)
return pid
def get_gpu_info():
"""
获取Gpu信息
:return: 已用显存,显存占用率,Gpu利用率
"""
# GPUtil.showUtilization()
gpu = GPUtil.getGPUs()[0]
# print(gpu.memoryUsed, gpu.memoryUtil * 100, gpu.load * 100)
return gpu.memoryUsed, gpu.memoryUtil * 100, gpu.load * 100
def check_exsit(process_name):
"""
判断进程是否存在
:param process_name: 进程名
:return: 进程存在返回真
"""
wmi = win32com.client.GetObject('winmgmts:')
process_codecov = wmi.ExecQuery('select * from Win32_Process where Name like "%{}%"'.format(process_name))
if len(process_codecov) > 0:
return True
else:
return False
def monitor_process(pid, interval=0.5):
"""
抓取指定进程的CPU、内存信息
:param pid: 进程id
:param interval: 抓取间隔
:return:
"""
p = psutil.Process(pid)
# print("start_time: ", time.strftime('%m-%d %H:%M:%S', time.localtime(time.time())))
keys = ["次数", "cpu利用率(%)", "所占内存(M)", "内存占用百分比(%)", "所占显存(M)", "所占显存百分比(%)", "GPU利用率(%)"]
row = 0
lines = [keys]
while True:
if check