成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python & IPython Notebook 代碼計時與簡單的性能分析

betacat / 1267人閱讀

摘要:本文記錄一些用于代碼計時和簡單性能分析的工具。也就是這個魔法命令把中剩余的代碼作為輸入變量,對其進(jìn)行計時。該命令會運(yùn)行最后一個參數(shù)指定的代碼,然后在運(yùn)行時分析所有需要分析的函數(shù)。該命令運(yùn)行之后會打印一個逐行分析報告。

本文記錄一些用于 Python 代碼計時和簡單性能分析的工具。強(qiáng)烈推薦后兩種工具。

begin & end 手動計時

Matlab 里有一對 tic toc 命令,使用格式如下:

tic
% do anything
toc

之后會打印中間的代碼執(zhí)行時間。這種風(fēng)格對于簡單的計時還是挺好用的。遺憾的是 Python 中沒有類似的特別方便的模塊,只能用類似于下面的代碼進(jìn)行模仿:

from time import time

begin = time()
# do anything
end = time()
print(end - begin)
timeit 模塊

timeit 模塊用起來特別不方便:

from timeit import timeit

timeit(stmt="code to run", setup="init code", number=1000000)

后來逐漸發(fā)現(xiàn)這個模塊是設(shè)計在 Shell 命令行模式下使用的,而不是在 IPython notebook 模式下使用的。因此這里不多介紹,需要在 Shell 命令行下計時時可以查閱其 Shell 模式下的使用方法。

IPython Notebook %%time

使用 IPython Notebook 時,最簡單的代碼計時應(yīng)該是 %%time 魔法命令(magic command, I am a Zhong 2)

%%time
# code to run...

注意,"%%" 開頭的魔法命令必須寫在一個 cell 的第一行,并且通常以 cell 中剩余的內(nèi)容作為輸入變量。也就是這個魔法命令把 cell 中剩余的代碼作為輸入變量,對其進(jìn)行計時。

line_profiler

line_profiler 是一個強(qiáng)大的代碼逐行時間或者空間開銷分析工具,筆者通常用于代碼逐行運(yùn)行時間分析,從而定位到用時最多的代碼,并且能得到每行代碼耗時百分比。定位到代碼熱點(diǎn)之后可以對熱點(diǎn)進(jìn)行優(yōu)化,從而以最小的改動而最大程度上提升代碼效率。本文僅介紹筆者常用的一種方式。

使用前需要安裝:

conda install line_profiler
# or
pip install line_profiler

在 Notebook 中使用,需要運(yùn)行

%load_ext line_profiler

使用 line_profiler 進(jìn)行時間分析時,需要指定分析的函數(shù),該工具只會對這個函數(shù)中的代碼進(jìn)行逐行分析。比如對函數(shù) hello 和函數(shù) hi 進(jìn)行逐行分析,在 Notebook 中命令為

%lprun -f hello -f hi hello()

-f 參數(shù)表明接下來要指定一個函數(shù)名進(jìn)行分析,最后一個參數(shù)則是要運(yùn)行的代碼。該命令會運(yùn)行最后一個參數(shù)指定的代碼,然后在運(yùn)行時分析所有需要分析的函數(shù)。該命令運(yùn)行之后會打印一個逐行分析報告。

更詳細(xì)的使用方法參考 如何進(jìn)行 Python性能分析,你才能如魚得水?,easy profile python in jupyter 以及這些模塊的幫助文檔和官方文檔。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44412.html

相關(guān)文章

  • Jupyter Notebook之初識及入門

    摘要:所以,應(yīng)該直接了當(dāng)?shù)陌惭b,其中也會自動安裝上,作為其運(yùn)行的。這只是一開始,之后還有里各種找不到外部安裝的的情況。終于,意識到這些方法都是錯誤的思路。這才知道原來是無法識別。 為什么要用IPython/Jupyter? python里面調(diào)試確實(shí)有點(diǎn)煩惱,尤其是在vim里,想要嘗試一些簡單的編碼問題,實(shí)在是有點(diǎn)麻煩,不想到命令行模式一行一行執(zhí)行,也不想再新建一個文件測試一個簡單的功能。 而...

    plus2047 評論0 收藏0
  • Jupyter Notebook之初識及入門

    摘要:所以,應(yīng)該直接了當(dāng)?shù)陌惭b,其中也會自動安裝上,作為其運(yùn)行的。這只是一開始,之后還有里各種找不到外部安裝的的情況。終于,意識到這些方法都是錯誤的思路。這才知道原來是無法識別。 為什么要用IPython/Jupyter? python里面調(diào)試確實(shí)有點(diǎn)煩惱,尤其是在vim里,想要嘗試一些簡單的編碼問題,實(shí)在是有點(diǎn)麻煩,不想到命令行模式一行一行執(zhí)行,也不想再新建一個文件測試一個簡單的功能。 而...

    fredshare 評論0 收藏0
  • 裝扮你Jupyter

    摘要:顯示中文此外,單獨(dú)拎出來的另一個原因是,還有一個中文顯示的問題。首先我們來看可以使用的字體你應(yīng)該看到下面這樣的表格然后找到支持中文的字體名,然后設(shè)置的默認(rèn)字體當(dāng)然,你可以添加到剛才的配置中,或者采用這個博客的方法。 又到擺脫重復(fù)工作,換個心情,然而并沒有軟用的時間了。這次,教大家如何搭建一個好看的jupyter環(huán)境。 安裝Jupyter 先來展示一下我的環(huán)境 python: 3.5....

    leo108 評論0 收藏0
  • CentOS7 install spark+ipython-nodebook

    摘要:使用瀏覽器作為界面,向后臺的服務(wù)器發(fā)送請求,并顯示結(jié)果。本文主要介紹在上安裝流程該文件是用戶登錄時,操作系統(tǒng)定制用戶環(huán)境時使用的第一個文件,應(yīng)用于登錄到系統(tǒng)的每一個用戶。 ipython-nodebook IPython notebook 目前已經(jīng)成為用 Python 做教學(xué)、計算、科研的一個重要工具。 IPython Notebook 使用瀏覽器作為界面,向后臺的 IPython ...

    soasme 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<