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("\n")

    for srcLine in resultList:
        srcLine = "".join(srcLine.split('\n'))
        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) + '\tPID:' + m.group(2) + '\tmemory 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)

運行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM