利用4行Python代碼監(jiān)測(cè)每一行程序的運(yùn)行時(shí)間和空間消耗
Python是一個(gè)高層次的結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語言,其具有高可擴(kuò)展性和高可移植性,具有廣泛的標(biāo)準(zhǔn)庫,受到開發(fā)者的追捧,廣泛應(yīng)用于開發(fā)運(yùn)維(DevOps)、數(shù)據(jù)科學(xué)、網(wǎng)站開發(fā)和安全。然而,它沒有因速度和空間而贏得任何稱贊,主要原因是Python是一門動(dòng)態(tài)類型語言,每一個(gè)簡單的操作都需要大量的指令才能完成。
所以這更加需要開發(fā)者在使用Python語言開發(fā)項(xiàng)目時(shí)協(xié)調(diào)好程序運(yùn)行的時(shí)間和空間。

1、分析時(shí)間耗時(shí)
分析項(xiàng)目消耗的時(shí)間消耗,依托于line_profiler模塊,其可以計(jì)算出執(zhí)行每行代碼所需占用的CPU時(shí)間。
第1步:安裝line_profiler模塊,我是用pip安裝一直失敗,所以下載到本地進(jìn)行離線安裝,指令如下所示:
pip install .\line_profiler-3.0.2-cp37-cp37m-win_amd64.whl
安裝成功效果如下所示:

第2步:分析每行代碼的運(yùn)行時(shí)間,本案例Demo檢測(cè)for循環(huán)一萬次累加和while循環(huán)一萬次累加的時(shí)間,并進(jìn)行對(duì)比,實(shí)現(xiàn)代碼如下所示:
from line_profiler import LineProfiler
def operation1():
num=0
for i in range(10000):
num += 1
def operation2():
num=0
while(num < 10000):
num += 1
if __name__ == "__main__":
lprofiler = LineProfiler(operation1,operation2)
lprofiler.run('operation1()')
lprofiler.run('operation2()')
lprofiler.print_stats()
運(yùn)行程序,可見while循環(huán)速度稍微慢一些,效果如下所示:

2、分析空間耗時(shí)
memory_profiler模塊可實(shí)現(xiàn)對(duì)Python項(xiàng)目中每一個(gè)代碼的內(nèi)存消耗進(jìn)行分析和監(jiān)控。
第1步:安裝memory_profiler庫文件,指令如下所示:
pip install memory_profiler
安裝成功效果如下所示:

第2步:分析每行代碼的空間消耗,本案例Demo檢測(cè)for循環(huán)一萬次累加和while循環(huán)一萬次累加的消耗空間,并進(jìn)行對(duì)比,實(shí)現(xiàn)代碼如下所示:
from memory_profiler import profile @profile def operation1(): num=0 for i in range(10000): num += 1 @profile def operation2(): num=0 while(num < 10000): num += 1 if __name__ == "__main__": operation1() operation2()
由于是簡單運(yùn)算消耗的內(nèi)存是微乎其微的,效果如下所示:

本篇博文僅介紹以上兩種模塊,其實(shí)有更多有意思的模塊可以實(shí)現(xiàn)對(duì)程序的運(yùn)行時(shí)間和空間消耗的監(jiān)測(cè),感興趣的朋友可以多多嘗試。
到此這篇關(guān)于利用4行Python代碼監(jiān)測(cè)每一行程序的運(yùn)行時(shí)間和空間消耗的文章就介紹到這了,更多相關(guān)python 監(jiān)測(cè)程序運(yùn)行時(shí)間空間消耗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python Pandas高級(jí)功能之?dāng)?shù)據(jù)透視表和字符串操作
Pandas是Python中用于數(shù)據(jù)處理和分析的強(qiáng)大庫,這篇文章將深入探討Pandas庫的高級(jí)功能:數(shù)據(jù)透視表和字符串操作,需要的朋友可以參考下2023-07-07
python實(shí)現(xiàn)股票歷史數(shù)據(jù)可視化分析案例
股票交易數(shù)據(jù)分析可直觀股市走向,對(duì)于如何把握股票行情,快速解讀股票交易數(shù)據(jù)有不可替代的作用,感興趣的可以了解一下2021-06-06
python保留格式匯總各部門excel內(nèi)容的實(shí)現(xiàn)思路
這篇文章主要介紹了python保留格式匯總各部門excel內(nèi)容,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06

