目录
1. 程序分析,对程序中的四个函数做简要说明
2. 代码风格说明。
3. 程序运行命令、运行结果截图
4. 性能分析结果及改进
1. 程序分析,对程序中的四个函数做简要说明
读文件到缓冲区
def process_file(dst): # 读文件到缓冲区
try: # 打开文件
file=open(dst,'r')
except IOError as s:
print(s)
return None
try: # 读文件到缓冲区
bvffer=file.read()
except:
print
"Read File Error!"
return None
file.close()
return bvffer
-
添加处理缓冲区,统计每个单词的频率,存放在字典
def process_buffer(bvffer):
if bvffer:
word_freq = {}
# 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq
for word in bvffer.split():
if word not in word_freq:
word_freq[word]=0
word_freq[word]+=1
调用之前的函数
def main():
dst = "D:/桌面/Gone_with_the_wind.txt"
bvffer = process_file(dst)
word_freq = process_buffer(bvffer)
output_result(word_freq)
主函数
if __name__ == "__main__":
import cProfile
import pstats
cProfile.run("main()", filename="result.out")
p = pstats.Stats('result.out') # 创建Stats对象
p.sort_stats('calls').print_stats(10) # 按调用次数排序,打印前10函数的信息
p.strip_dirs().sort_stats("cumulative", "name").print_stats(10) # 按运行时间和函数名进行排序,打印前10行函数的信息
p.print_callees("process_buffer")
2.代码风格说明
缩进规则:
- Python 采用代码缩进和冒号( : )来区分代码块之间的层次。
- 在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。
- Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。
-
-
def output_result(word_freq):
-
if word_freq:
-
sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)
-
for item in sorted_word_freq[:10]: # 输出 Top 10 的单词
-
print(item)
其中的if与for语句有着各自的缩进
-
4. 寻找执行时间、次数最多的部分代码与改进
执行时间最长的代码
def process_buffer(bvffer):
if bvffer:
word_freq = {} # 新建一个空字典word_freq
# 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq
for word in bvffer.split(): # .split()函数将bvffer切片
if word not in word_freq:
word_freq[word] = 0
word_freq[word] += 1
return word_freq
修改后代码
def process_buffer(bvffer):
if bvffer:
word_freq = {} # 新建一个空字典word_freq
# 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq
for word in bvffer.split(): # .split()函数将bvffer切片
word_freq.setdefault(word, 0)
word_freq[word] += 1
return word_freq
总结:查找较为复杂,且区分单词大小写



