算法:
创建四个list对应存储不同的响应时间段
读入日志文件每行内容,依次存入列表
1.取出日志文件中每一次处理请求的时间,存入相应的list
1.1 取出时间字符串
先找到“op takes ”的位置-->idx1
再找到 idx1 其后面紧跟着的第一个空格的位置-->idx2
这行日志[idx1:idx2] -->responsetimestr
1.2判断其值,存入相应list
2.统计每个时间段list处理时间的个数,并计算百分比
# coding:utf-8
# 100ms以下的
list100 = []
# 100ms-500ms
list100_500 = []
# 500ms-1000ms
list500_1000 = []
# 1000ms以上的
list1000 = []
filepath = 'server.log'
fd = open(filepath)
lines = fd.readlines()
fd.close()
keyword = 'mac1:'
for line in lines:
#获取响应时间
idx1 = line.find(keyword)
idx1 += len(keyword)
idx2 = line.find('',idx1)
responsetimestr = line[idx1:idx2]
rts = float(responsetimestr)
#存入容器
if rts < 0.1:
list100.append(rts)
elif 0.1 <= rts <0.5:
list100_500.append(rts)
elif 0.5 <= rts <1:
list500_1000.append(rts)
elif rts >=1:
list1000.append(rts)
num100 = len(list100)
num100_500 = len(list100_500)
num500_1000 = len(list500_1000)
num1000 = len(list1000)
totalnum = float(num100+num100_500+num500_1000+num1000)
print u'0ms-100ms :%个,百分之 %.2f'% (num100,num100*100/totalnum)
print u'100ms-500ms :%个,百分之 %.2f'% (num100_500,num100_500*100/totalnum)
print u'500ms-1000ms :%个,百分之 %.2f'% (num500_1000,num500_1000*100/totalnum)
print u'>1000ms :%个,百分之 %.2f'% (num1000,num1000*100/totalnum)
重点:
设计方法
人工操作角度思考
伪代码描述思路
代码实现伪代码
注意代码的可读性:合理命令;相应注释
断点和单步执行的方式解决问题