Python通过PID记录进程的内存占用并保存到csv文件中
Python通过PID记录进程的内存占用并保存到csv文件中,并且可以利用EXCEl的工具将数据转化成图表展示。
1)首先打开任务管理器,获取需要监控内存占用的进程的PID 2)修改下面代码中的PID,再执行代码 1、test3.py
import os import time import multiprocessing # 打印所有进程 def getall(): for line in os.popen(tasklist).readlines(): print(line[:]) # 获取指定pid的进程内存,并将数据分为内存、CPU占用率 def getonetask(pid): for data in os.popen(tasklist).readlines(): if pid in data: data = data.split() msg_mem = data[4] #print(msg_mem.replace(,,)) wdata = msg_mem.replace(,,) + , + time.strftime("%H:%M:%S",time.localtime()) return wdata # 定时存进一个csv文档里 def saveinformation(information): filename = savememory.csv with open(filename, a+) as f: "每隔10s去执行一次" f.write(information) f.write( ) # 定时执行 def work(): #先写CSV文件头 initdata = memory,time with open(savememory.csv, w) as f: f.write(initdata) f.write( ) while 1: info = getonetask("12672") #根据监控的进程修改 saveinformation(info) time.sleep(10)
2、main.py
import multiprocessing import test3 if __name__ == __main__: p = multiprocessing.Process(target=test3.work(), ) p.start() p.deamon = True
3)执行结果,下图图表清楚的展示了该进程的内存占用变化 补充另一种方案获取内存占用
使用Psutil这个第三方模块,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用。
# 获取指定pid的进程内存,并将数据分为内存、CPU占用率 def getonetask(pid): p = psutil.Process(pid) #获取当前进程的CPU占用 #print(p.cpu_percent(interval=1)) cpu = round(p.cpu_percent(interval=0.1)/psutil.cpu_count(),1) #获取当前进程的内存占用 memory = round(p.memory_percent(),2) wdata = str(cpu) + ,+str(memory)+, + time.strftime("%H:%M:%S",time.localtime()) return wdata
参考: https://blog..net/wudingan/article/details/118445233
上一篇:
Python 安装包管理工具 pip