第三次作業

2022-09-11 05:36:08 字數 2677 閱讀 3357

1.自己的基本資訊:

2.程式分析,對程式中的四個函式做簡要說明。要求附上每一段**及對應的說明

第一段:開啟並讀取檔案到緩衝區

def process_file(dst):     #

讀檔案到緩衝區

try: #

開啟檔案

f =open(dst)

except

ioerror as s:

print

(s)

return

none

try: #

讀檔案到緩衝區

bvffer =f.read()

except

:

print ("

read file error!")

return

none

f.close()

return bvffer

第二段:新增處理緩衝區bvffer**,統計每個單詞的頻率,對文字特殊符號進行修改,並讀入字典word_freq

def

process_buffer(bvffer):

2 if

bvffer:

3 word_freq ={}

4 #

下面新增處理緩衝區 bvffer**,統計每個單詞的頻率,存放在字典word_freq

5 for item in

bvffer.strip().split():

6 word = item.strip(punctuation+'')

7 if word in

word_freq.keys():

8 word_freq[word] += 1

9 else

:10 word_freq[word] = 1

11 return word_freq

第三段:設定輸出函式,進行排序並輸出top 10 的單詞,統計詞頻

def

output_result(word_freq):

2 if

word_freq:

3 sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=true)

4 for item in sorted_word_freq[:10]: #

輸出 top 10 的單詞

5 print(item)

第四段:呼叫main函式,輸出至控制台

if

__name__ == "

__main__":

import

argparse

parser =argparse.argumentparser()

parser.add_argument(

'dst')

args =parser.parse_args()

dst =args.dst

bvffer =process_file(dst)

word_freq =process_buffer(bvffer)

output_result(word_freq)

3.效能分析結果及改進程式執行命令、執行結果截圖

用命令python -m cprofile word_freq.py gone_with_the_wind.txt執行:

分析:gone_with_the_wind.txt檔案大小是2.25 m

總共有869127次函式呼叫,程式總共耗時0.443秒

指出執行次數最多的**

執行時間最長的**

給出改進優化的方法以及你的改進**

應改把執行時間最長的**優化一下,函式process_buffer函式中有一行**:

if word in word_freq.keys():
該**在for迴圈中,有多少單詞,這個迴圈就會執行多少遍,每次進行條件判斷的時候都要執行一次字典的keys方法,所以耗時很多。於是把keys去除,該行**變為:

if word in word_freq:
更改後速度會有明顯提公升

4.總結

在本次課後作業中,使我更加熟練的掌握了碼雲以及部落格網的使用,並且複習了上次作業中git傳輸遠端倉庫的操作,又新學會了如何建立git分支。在python中,又學會了新的函式與語句

並且學會了如何使用使用cprofile進行效能分析已經明白了什麼是效能分析器,相信在以後的學習中,我會更加努力,學到更多的知識。

第三次作業

2 12有600 mb 兆位元組 的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車這 些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kb s,其結果又如何?解 當傳送速率為2.4k...

第三次作業

1 有600mb 兆位元組 的資料,需要從南京傳送到北京 一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料,試比較這兩種方法的優劣。若資訊傳送的速率為33.6kb s,其結果又如何?解 假定連續傳送且不出錯。若...

第三次作業

p67 2 12 有600mb的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率是2.4kbps 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kbps,其結果又如何?解 1 t 600 1024...