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

经验分享 程序员 微信小程序 职场和发展