日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python输出运行时间表_Python编程第十二课 了解程序运行的时间

發布時間:2023/12/10 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python输出运行时间表_Python编程第十二课 了解程序运行的时间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

了解了程序如何運行,我們就可以讓我們寫的程序變得更快。

介紹

在前面很長一段時間,我們學習建立一個搜索索引,它可以通過一次一次地查看每個條目來響應查詢。

當搜索索引檢查關鍵字與我們要找的詞相匹配時,就會把結果打印出來。

但是,如果索引很大很大,查詢次數很多很多,這種方法就會太慢。

一個典型的商用的搜索引擎應該在一秒鐘內做出響應,甚至還會快得多。

在接下來的幾篇文章,我們將學習如何使我們的搜索索引更快。

讓事情變得更快的辦法

這幾篇文章最主要目標是讓大家了解程序的運行成本。

到此刻為止,我們還沒有擔心過這個問題,那是我們寫的都是最簡單的代碼,如果程序的代碼足夠大的時候,或者讓程序運行更多的事情的時候,我們就必須開始考慮運行它們的成本。

這個評估一個執行的成本是一個非常重要的問題,它是計算機科學的一個基本問題。有些人整個職業生涯都在研究這個問題。這就是所謂的算法分析。

在看我寫的公號過程中,你可能沒有意識到這一點,但實際你完整學習的話,已經寫了很多算法。

算法是一個輸入某些東西,然后讓計算機產生正確結果的程序。

一個程序是一個邏輯清晰的步驟序列,它可以機械地執行。

我們主要對可以被計算機執行的程序感興趣,但它之所以成為程序,重要的部分在于它的步驟是精確定義的,不需要思考就可以執行。

要成為一個算法,它必須總是完成。也就是說它必須要有輸出。

你已經看到,要確定一個算法是否總有輸出,這不是一個簡單的問題。

一般來說,不可能回答這個問題,在現實世界,你永遠無法給出下一秒的準確預測,明天的輸出需要明天到來之后,才能觀察到。

但對于計算機的程序來說,給定一個輸入,必須要有一個輸出的結果,哪怕是個錯誤的結果。

所以,一旦你有了一個算法,然后你用邏輯清晰定義了實現的步驟,那么它就會產生正確的結果。

這也意味著你可以通過統計每段過程,對它的成本進行推理。

什么是成本?

計算機科學家思考成本的方式與大多數人思考成本的方式完全不同。

當你考慮到東西的成本時,你就會知道具體的東西,比如紅車要25000元,綠車要10000元--紅車比綠車貴。

你只要比較這些成本就可以了。這是以非常具體的事物與具體的成本來思考的。

用算法就不一樣了。我們通常不會有一個具體的執行思路。成本取決于投入。

假設 算法A 和 算法B 都解決同一個問題。

輸入 算法A 輸出

輸入 算法B 輸出

你不能像汽車那樣給它們定一個固定的價格。

對于某些輸入,可能 算法A 比 算法B 便宜,但對于其他輸入,算法B 可能更便宜。

你不希望對每一個輸入都要進行計算。

在計算機科學中,成本的主要方式是以輸入的大小來談論的。

通常情況下,輸入的大小是決定算法速度的主要因素。

通俗的來說,計算中的成本是以時間如何隨著輸入的大小增加而增加來衡量。

有時,輸入的其他屬性也很重要,這在后面會提到。最終,成本總是歸結為錢。

當算法執行時,什么是需要花錢的?

完成的時間--如果它完成得更快,你就會花更少的時間在它身上。你可以按執行時間來租用電腦。有各種云計算服務,你按使用時間支付一定大小的處理器的費用。這只是幾分錢每小時。時間真的是金錢,雖然我們不需要把成本變成金錢,因為我們可能不知道確切的計算成本,但了解執行時間就能很好地了解成本。

內存--如果執行一個算法需要一定的內存,那么你就可以知道運行程序所需的計算機大小和成本。

總而言之,成本是以時間和記憶而不是以金錢來談論的;盡管這些的實際實施確實會轉化為實際的金錢成本。時間往往是成本的最重要方面,但記憶也是另一個考慮因素。

為什么計算機科學家專注于測量時間隨輸入大小而變化,而不是絕對時間?

a我們想在運行一個程序之前,預測它的執行時間。

b我們想知道隨著計算機的速度越來越快,時間將如何變化。

c我們想了解算法的基本屬性,而不是特定輸入或機器的東西。

d我們想要抽象的答案,所以它們永遠不會錯。

e縱觀整個計算的歷史,一年后用同樣的錢能買到的計算機會比今天能買到的計算機快。

程序運行的時間

下面我們將學習如何檢查一段代碼運行所需的時間。

下面的存儲過程time_execution就是一種評估代碼執行所需時間的一種方法。

你可以嘗試用秒表來做,但是為了準確,你必須運行程序很長時間。

使用 time 時間庫中內置的 time_execution() 更準確。代碼后面有注釋。

import time #這是一個Python庫

def time_execution(code):

start = time.monotonic() # 啟動時鐘,返回的時鐘的浮點數值

result = eval(code) # 把任何字符串當作Python命令來計算。

run_time = time.monotonic() - start # 找出開始時間和結束時間的差異。

return result, run_time # 返回代碼結果和所需時間

Jupyter中的執行過程:

時鐘已經啟動。它開始時讀取的時間有些隨意,但這并不重要,因為你只對它開始和停止的時間差感興趣,而不是絕對的開始和結束時間。

時鐘啟動后,你要評估的代碼會被執行。這是由相當令人興奮的方法eval('code')完成的。它允許你以字符串的形式運行任何輸入的代碼!你輸入一個字符串,它就會運行。

你輸入一個字符串,它就會把它作為 Python 代碼運行。例如,eval('1 + 1') 運行代碼 1 + 1。

代碼執行完畢后,時鐘停止,計算開始和停止時間的差值,并存儲為run_time。

最后,過程在eval中返回代碼的結果及其運行時間。

你可以通過web解釋器來運行計時,但它不會是準確的,而且你的代碼在那里運行的時間是有限制的。

如果你的電腦上安裝了Python,你就可以在上面運行。

如果你還沒有安裝Python,盡快安裝。

只要動手自己做一遍,才是最快速的學習方式。

上面的輸出代碼都是Frankie在他的Mac anaconda里的Jupyter notebook中運行的。

回顧一下,time_execution 的輸入 "1 + 1",被作為輸入發送給 eval ,然后它以 Python 代碼的形式運行 1 + 1。

運行時間用科學記數法寫成:(2, 1.7687999843474245e-05)

你可以通過觀察 e 后面的 -5 來了解它的來源,它告訴你把小數點向左移動 5 步,就像這樣。

單位是秒,所以這是毫秒的一小部分,也就是0.017毫秒左右。

反復嘗試同一條指令,由于同一時間機器里有其他事情在進行,所以結果會有所不同,但都是同一個值左右。

如果你試著嘗試更大的數字,時間還是非常非常小的。

實際的處理時間還會更低,因為,啟動和停止時鐘等都算入到時間里面了。

對于這種很小的代碼的執行來說,這并不能說明什么。

所以接下來的文章,你會看到一些較長的模塊它的執行時間。關注編程聯盟,繼續學習了解更多的內容。

總結

以上是生活随笔為你收集整理的python输出运行时间表_Python编程第十二课 了解程序运行的时间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。