網站首頁 編程語言 正文
本文介紹 Jupyter Notebook 中用于計算運行時間的魔法命令 ( magic commands ) %time 和 %timeit 。
1.%time 或 %timeit:計算當前行的代碼運行時間。
%time 的計算結果包括:CPU time(CPU運行程序的時間), Wall time(Wall Clock Time,墻上掛鐘的時間,也就是我們感受到的運行時間)。
%timeit 計時更為精確,這一命令會運行代碼 r 次,每次 n 遍,再對 n*r 遍的結果取平均后,得到運行一遍代碼的時間。
舉個例子來看看吧,以列表的循環計算為例,先看 %time 的計算:
nums1=list(range(10000))
%time nums2=[i+5 for i in nums1]
這里我們用 %time 計算一下第二行代碼,也就是對列表中每個元素的值加 5 的運行時間,結果為:
Wall time: 998 μs
我的電腦上不知怎么回事,只顯示了 Wall time 。
再來看 %timeit 的計算:
nums1=list(range(10000))
%timeit nums2=[i+5 for i in nums1]
結果為:
645 μs ± 45.3 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
如上所示,使用 %timeit 計時會運行 r 次(默認值 r=7), 每一次運行 n 遍的 n 則是由系統根據代碼確定一個合適的值,這里 n=1000,最后對所有計時結果取平均得到運行一遍代碼的時間。
也可以使用 %timeit -r R -n N,以自定義的設置(運行R次,每一次N遍)來運行代碼并計時。例如:
nums1=list(range(10000))
%timeit -r 5 -n 400 nums2=[i+5 for i in nums1]
就是對代碼運行 5 次, 每次 400 遍,最后對所有計時結果取平均,得到運行一遍代碼的時間。結果如下:
705 μs ± 60.1 μs per loop (mean ± std. dev. of 5 runs, 400 loops each)
2.%%time 或 %%timeit:計算當前單元(cell)的代碼運行時間。
%%time 與 %time , %%timeit 與 %timeit 的計算方式相同,區別在于 % 是用于單行代碼的命令,%% 是應用于當前單元的命令。
需要注意的是,%%time 或者 %%timeit 必須在當前單元的第一行。 并且,%%time 后不能跟代碼。例如:
%%time
nums1=list(range(10000))
nums2=[i+5 for i in nums1]
結果為:
Wall time: 1.99 ms
%%timeit 后面可以跟代碼,這行代碼會運行、但不會計入時間,從第二行開始計時。例如:
%%timeit nums1=list(range(10000))
nums2=[i+5 for i in nums1]
結果為:
685 μs ± 47 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
可以看到,這一結果與前面使用行命令 %timeit 的結果相近,因為 %%timeit 之后的代碼nums1=list(range(10000)) 運行但是不計時。
再來看看 %%timeit 單獨放在第一行的結果:
%%timeit
nums1=list(range(10000))
nums2=[i+5 for i in nums1]
結果為:
800 μs ± 52 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
這種情況下,會對代碼 nums1=list(range(10000)) 計時,因此運行時間更長一點。
參考:
1.Ipython幫助文檔對于 %time 和 %timeit的講解
2.stackoverflow關于 %timeit 的一個問答,介紹了 %timeit 和 %%timeit
原文鏈接:https://blog.csdn.net/applebear1123/article/details/120791281
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-07-13 仿 OriginOS 無清理項動畫
- 2022-04-09 SpringBoot 項目打包成jar包,并執行Jar文件
- 2022-03-15 使用swagger-bootstrap-ui ,訪問的時候 404
- 2022-03-14 Springboot讀取外部配置文件,項目部署時配置讀取不到問題
- 2022-04-16 WPF框架Prism中View?Injection用法介紹_基礎應用
- 2022-10-19 react-redux集中式狀態管理及基本使用與優化_React
- 2023-01-12 pandas中的DataFrame數據遍歷解讀_python
- 2022-08-21 如何使用C語言將數字、字符等數據寫入、輸出到文本文件中_C 語言
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支