您好,登錄后才能下訂單哦!
這篇“Jupyter Notebook中的%time和%timeit如何使用”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Jupyter Notebook中的%time和%timeit如何使用”文章吧。
%time 的計(jì)算結(jié)果包括:CPU time(CPU運(yùn)行程序的時(shí)間), Wall time(Wall Clock Time,墻上掛鐘的時(shí)間,也就是我們感受到的運(yùn)行時(shí)間)。
%timeit 計(jì)時(shí)更為精確,這一命令會(huì)運(yùn)行代碼 r 次,每次 n 遍,再對(duì) n*r 遍的結(jié)果取平均后,得到運(yùn)行一遍代碼的時(shí)間。
舉個(gè)例子來(lái)看看吧,以列表的循環(huán)計(jì)算為例,先看 %time 的計(jì)算:
nums1=list(range(10000)) %time nums2=[i+5 for i in nums1]
這里我們用 %time 計(jì)算一下第二行代碼,也就是對(duì)列表中每個(gè)元素的值加 5 的運(yùn)行時(shí)間,結(jié)果為:
Wall time: 998 µs
我的電腦上不知怎么回事,只顯示了 Wall time 。
再來(lái)看 %timeit 的計(jì)算:
nums1=list(range(10000)) %timeit nums2=[i+5 for i in nums1]
結(jié)果為:
645 µs ± 45.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
如上所示,使用 %timeit 計(jì)時(shí)會(huì)運(yùn)行 r 次(默認(rèn)值 r=7), 每一次運(yùn)行 n 遍的 n 則是由系統(tǒng)根據(jù)代碼確定一個(gè)合適的值,這里 n=1000,最后對(duì)所有計(jì)時(shí)結(jié)果取平均得到運(yùn)行一遍代碼的時(shí)間。
也可以使用 %timeit -r R -n N,以自定義的設(shè)置(運(yùn)行R次,每一次N遍)來(lái)運(yùn)行代碼并計(jì)時(shí)。例如:
nums1=list(range(10000)) %timeit -r 5 -n 400 nums2=[i+5 for i in nums1]
就是對(duì)代碼運(yùn)行 5 次, 每次 400 遍,最后對(duì)所有計(jì)時(shí)結(jié)果取平均,得到運(yùn)行一遍代碼的時(shí)間。結(jié)果如下:
705 µs ± 60.1 µs per loop (mean ± std. dev. of 5 runs, 400 loops each)
%%time 與 %time , %%timeit 與 %timeit 的計(jì)算方式相同,區(qū)別在于 % 是用于單行代碼的命令,%% 是應(yīng)用于當(dāng)前單元的命令。
需要注意的是,%%time 或者 %%timeit 必須在當(dāng)前單元的第一行。 并且,%%time 后不能跟代碼。例如:
%%time nums1=list(range(10000)) nums2=[i+5 for i in nums1]
結(jié)果為:
Wall time: 1.99 ms
%%timeit 后面可以跟代碼,這行代碼會(huì)運(yùn)行、但不會(huì)計(jì)入時(shí)間,從第二行開始計(jì)時(shí)。例如:
%%timeit nums1=list(range(10000)) nums2=[i+5 for i in nums1]
結(jié)果為:
685 µs ± 47 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
可以看到,這一結(jié)果與前面使用行命令 %timeit 的結(jié)果相近,因?yàn)?%%timeit 之后的代碼nums1=list(range(10000)) 運(yùn)行但是不計(jì)時(shí)。
再來(lái)看看 %%timeit 單獨(dú)放在第一行的結(jié)果:
%%timeit nums1=list(range(10000)) nums2=[i+5 for i in nums1]
結(jié)果為:
800 µs ± 52 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
這種情況下,會(huì)對(duì)代碼 nums1=list(range(10000)) 計(jì)時(shí),因此運(yùn)行時(shí)間更長(zhǎng)一點(diǎn)。
以上就是關(guān)于“Jupyter Notebook中的%time和%timeit如何使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。