做效能測試中經常用到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[i][:6])
#print "pid = " +str(pid),"cpuPid= "+str(cpuPid)
if pid==cpuPid:
# print "#"*10
#print float(lineList[i][55:60])
cpulist.append(float(lineList[i][55:60]))
Memorylist.append(float(lineList[i][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 memorydef 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))