zoukankan      html  css  js  c++  java
  • python统计某一个进程名所占用的内存

    设计思路:

    通过python,执行cmd中tasklist命令,获取要统计的进程的相关信息;通过正则表达式,查找出进程名称、进程pid、内存使用,然后打印出来。

    作为pythoner,有时候需要统计python.exe进程所占用的内存,因此在设计时,通过pid,过滤掉统计内存这个脚本所启用的内存的信息,只统计其他的python.exe的信息。

    具体实现:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # coding:gbk
    import os, re
    import time
    import string
    
    #统计某一个进程名所占用的内存,同一个进程名,可能有多个进程
    def countProcessMemoey(processName):
        pattern = re.compile(r'([^s]+)s+(d+)s.*s([^s]+sK)')
        cmd = 'tasklist /fi "imagename eq ' + processName + '"' + ' | findstr.exe ' + processName
        result = os.popen(cmd).read()
        resultList = result.split("
    ")
    
        for srcLine in resultList:
            srcLine = "".join(srcLine.split('
    '))
            if len(srcLine) == 0:
                break
            m = pattern.search(srcLine)
            if m == None:
                continue
            #由于是查看python进程所占内存,因此通过pid将本程序过滤掉
            if str(os.getpid()) == m.group(2):
                continue
            ori_mem = m.group(3).replace(',','')
            ori_mem = ori_mem.replace(' K','')
            ori_mem = ori_mem.replace(r'sK','')
            memEach = string.atoi(ori_mem)
            print 'ProcessName:'+ m.group(1) + '	PID:' + m.group(2) + '	memory size:%.2f'% (memEach * 1.0 /1024), 'M'
    
        print "*" * 58
    
    if __name__ == '__main__':
        #进程名
        ProcessName = 'python.exe'
        ProcessName2 = "chrome.exe"
    
        while True:
            countProcessMemoey(ProcessName)
            countProcessMemoey(ProcessName2)
            time.sleep(5)
    

    运行结果:

  • 相关阅读:
    数组
    循环(二)
    循环——笔记
    C#基础(四)
    C#基础(三)
    安卓帮助文档
    增加线程异步发送消息的方法二(Runnable)
    增加线程异步发送消息的方法一(Thread)
    获取下拉框的值
    获取表中字段最大值,并且保存在前台页面中
  • 原文地址:https://www.cnblogs.com/zhbzz2007/p/5394782.html
Copyright © 2011-2022 走看看