用python计算top命令中某个进程的CPU,Memory使用情况

做性能测试中经常用到top命令,监控一段时间内某个进程的CPU,memory使用情况。10秒中一次输出到文件中,以下的代码是对输出的top文件进行的处理,获取CPU利用率,memory最大,最小,平均值。

topfile=raw_input("please input the topfile path :")
try:
    top=open(topfile,"r")
except IOError:
    print "No such file,please check your input"
cpulist=[]
Memorylist=[]
print "#"*50
print "1. if you want to get the max cpu and memory,please input toptest.getMaxValue()\n"
print "2. if you want to get the min cpu and memory,please input toptest.getMinValue()\n"
print "3. if you want to get the average cpu and memory,please input toptest.getAvgValue()\n"
print "#"*50
# get the max value of CPU and memory
  
def getMaxValue():
    cpuPid=int(raw_input("please input the pid: "))
   # print cpuPid
    lineList=top.readlines()
    length=len(lineList)
    for i in range(0,length):
        try:
            pid=int(lineList[:6])
            #print "pid = " +str(pid),"cpuPid= "+str(cpuPid)
            if pid==cpuPid:
               # print "#"*10
                #print float(lineList[55:60])
                cpulist.append(float(lineList[55:60]))
                Memorylist.append(float(lineList[29:33]))  
            else:
                "it is not a pid line"
        except ValueError:
            "print the valueError"
    print "the max CPU use is :"+ str(max(cpulist))+"%"
    print "the max Memory use is:"+ str(max(Memorylist))
   
# get the mim value of CPU and memory
def getMinValue():
    print "the min CPU use is:"+str(min(cpulist))+"%"
    print "the max Memory use is:"+ str(min(Memorylist))
def getAvgValue():
    print "the average CPU use is:"+str(float(sum(cpulist))/len(cpulist)) +"%"
    print "the average Memory use is:"+ str(float(sum(Memorylist))/len(Memorylist))