第三次作业(词频统计及其效能分析)
?博客開(kāi)頭給出自己的基本信息,格式建議如下:
- 學(xué)號(hào)2017035107122;
- 姓名:張煒一
- 碼云地址:https://gitee.com/weiyi1208/word_frequency
調(diào)用次數(shù)最多的
執(zhí)行時(shí)間最長(zhǎng)的
?
將文件讀入緩沖區(qū)(dst指文本文件存放路徑,設(shè)置成形參,也可以不設(shè),具體到函數(shù)里設(shè)置)
def process_file(dst): # 讀文件到緩沖區(qū)
try: # 打開(kāi)文件
txt=open(dst,"r")
except IOError as s:
print (s)
return None
try: # 讀文件到緩沖區(qū)
bvffer=txt.read()
except:
print ("Read File Error!")
return None
txt.close()
return bvffer
?
設(shè)置緩沖區(qū),將文本度數(shù)緩沖區(qū),并對(duì)文本的特殊符號(hào)進(jìn)行修改,使其更容易處理,并讀入字典。
def process_buffer(bvffer):
if bvffer:
word_freq = {}
# 下面添加處理緩沖區(qū) bvffer代碼,統(tǒng)計(jì)每個(gè)單詞的頻率,存放在字典word_freq
bvffer=bvffer.lower()
for x in '~!@#$%^&*()_+/*-+\][':
bvffer=bvffer.replace(x, " ")
words=bvffer.strip().split()
for word in words:
word_freq[word]=word_freq.get(word,0)+1
return word_freq
?
設(shè)置輸出函數(shù),運(yùn)用lambda函數(shù)對(duì)詞頻排序,并以“詞”——“頻”格式輸出
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)
?
封裝main函數(shù),以便接下來(lái)的cProfile的性能評(píng)估
def main():
dst = "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()", "result")
# 直接把分析結(jié)果打印到控制臺(tái)
p = pstats.Stats("result") # 創(chuàng)建Stats對(duì)象
p.strip_dirs().sort_stats("call").print_stats() # 按照調(diào)用的次數(shù)排序
p.strip_dirs().sort_stats("cumulative").print_stats() # 按執(zhí)行時(shí)間次數(shù)排序
?
本次作業(yè)使我學(xué)習(xí)了python中cProfile的使用方式,通過(guò)此次作業(yè)是我對(duì)如何減少軟件執(zhí)行時(shí)間有了新的想法。
轉(zhuǎn)載于:https://www.cnblogs.com/weiyi08/p/10616809.html
總結(jié)
以上是生活随笔為你收集整理的第三次作业(词频统计及其效能分析)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: P1605 迷宫 dfs回溯法
- 下一篇: 2019春第五周作业