了解最新公司動(dòng)態(tài)及行業(yè)資訊
%time它用于對(duì)單行代碼的執(zhí)行進(jìn)行計(jì)時(shí)。它會(huì)自動(dòng)確定獲得具有統(tǒng)計(jì)意義的測(cè)量所需的 loop 和 repetition 數(shù)量,這有助于提供可靠的 timing 結(jié)果。
%timeit 的基本語(yǔ)法很簡(jiǎn)單。只需在代碼行前加上 %timeit 即可:
%timeit下面是一些示例來(lái)說(shuō)明 %timeit 的用法:
為簡(jiǎn)單的算術(shù)運(yùn)算計(jì)時(shí) %timeit sum(range(1000))此命令測(cè)量計(jì)算前 1000 個(gè)整數(shù)之和所花費(fèi)的時(shí)間。
為函數(shù)調(diào)用計(jì)時(shí)假您有一個(gè)函數(shù)my_function定義如下:
def my_function(n):return [x ** 2 for x in range(n)]可以通過(guò)以下方式為函數(shù)調(diào)用計(jì)時(shí):
%timeit my_function(1000) 使用附加參數(shù)計(jì)時(shí):可以將其他參數(shù)傳遞給 %timeit 來(lái)控制其行為。例如,要指定循環(huán)數(shù):
%timeit -n 1000 sum(range(1000))此處,-n 1000 指定該操作應(yīng)重復(fù) 1000 次。
另一方面,%%timeit magic 命令是 IPython 和 Jupyter 筆記本中的一個(gè) cell magic ,用于測(cè)量 cell 中多行代碼的執(zhí)行時(shí)間。與 %timeit 類似,它會(huì)多次運(yùn)行代碼以提供準(zhǔn)確的計(jì)時(shí)結(jié)果,報(bào)告最佳、最差和平均執(zhí)行時(shí)間。
%%time用于對(duì)單個(gè)單元格中多行代碼的執(zhí)行進(jìn)行計(jì)時(shí)。當(dāng)需要測(cè)量更復(fù)雜的操作或無(wú)法包含在單行中的一系列語(yǔ)句的性能時(shí),它特別有用。
要使用 %%timeit,請(qǐng)將其放在單元格的頂部,后跟要計(jì)時(shí)的代碼行:
%%timeit下面是一些示例來(lái)說(shuō)明 %%timeit 的用法:
對(duì)多個(gè)語(yǔ)句進(jìn)行計(jì)時(shí) %%timeittotal = 0for i in range(1000):total += i此命令測(cè)量使用 for 循環(huán)對(duì)前 1000 個(gè)整數(shù)求和所需的時(shí)間。
計(jì)時(shí)函數(shù)定義和調(diào)用假設(shè)在 cell 中定義并調(diào)用了一個(gè)函數(shù)my_function:
%%timeitdef my_function(n):return [x ** 2 for x in range(n)]result = my_function(1000)此命令測(cè)量定義函數(shù)并使用參數(shù) 1000 調(diào)用函數(shù)所花費(fèi)的時(shí)間。
使用設(shè)置代碼可以使用不直接計(jì)時(shí)但對(duì)于正在測(cè)量的代碼所必需的設(shè)置代碼。這對(duì)于設(shè)置變量或?qū)肽K很有用:
setup_code = import numpy as nparr = np.random.rand(1000)%%timeit -r 5 -n 1000 -s setup_codenp.sort(arr)在這里, setup_code 在每次 timing run 之前執(zhí)行,但不包括在 timing measurement中。
雖然 %timeit 和 %%timeit 都是用于測(cè)量代碼執(zhí)行時(shí)間的強(qiáng)大工具,但它們的用途不同,并且用于不同的上下文。了解它們的主要區(qū)別將有助于您選擇適合您特定需求的工具。
使用 %timeit:
當(dāng)您需要測(cè)量單個(gè)簡(jiǎn)單操作或函數(shù)的性能時(shí)。 用于不需要額外設(shè)置或上下文的快速單行性能檢查。使用 %%timeit:
當(dāng)您需要測(cè)量多行代碼或一組語(yǔ)句的性能時(shí)。 對(duì)于涉及設(shè)置代碼、多個(gè)操作或特定于上下文的代碼的更復(fù)雜的基準(zhǔn)測(cè)試。了解代碼的性能對(duì)于編寫高效和優(yōu)化的程序至關(guān)重要。IPython 和 Jupyter 筆記本中的 %timeit 和 %%timeit 魔術(shù)命令是功能強(qiáng)大的工具,可幫助您準(zhǔn)確測(cè)量和比較 Python 代碼的執(zhí)行時(shí)間。
%time它非常適合對(duì)單行代碼進(jìn)行計(jì)時(shí),提供了一種快速簡(jiǎn)便的方法來(lái)對(duì)單個(gè)操作進(jìn)行基準(zhǔn)測(cè)試。 %%time它非常適合對(duì)多行代碼塊進(jìn)行計(jì)時(shí),允許您測(cè)量更復(fù)雜的工作流程和設(shè)置的性能。通過(guò)使用這些工具,可以識(shí)別性能瓶頸,比較不同的方法,并就代碼優(yōu)化做出明智的決策。請(qǐng)記住遵循最佳實(shí)踐,例如隔離代碼、使用適當(dāng)?shù)姆秶瓦\(yùn)行多次重復(fù)以確保準(zhǔn)確測(cè)量。
24小時(shí)免費(fèi)咨詢
請(qǐng)輸入您的聯(lián)系電話,座機(jī)請(qǐng)加區(qū)號(hào)