App下載

Python 檢測(cè)程序的運(yùn)行時(shí)間和占用內(nèi)存情況

販賣(mài)月光的小女孩 2021-10-15 11:48:24 瀏覽數(shù) (7961)
反饋

在使用 Python 語(yǔ)言做算法、數(shù)據(jù)分析等等,通常程序員需要了解程序的效率和內(nèi)存使用的情況,從而更好地了解以及優(yōu)化程序。下面,就和大家分享一下如何來(lái)檢測(cè) Python 程序的運(yùn)行時(shí)間和內(nèi)存占用情況。

相關(guān)庫(kù)

Time

time 庫(kù)是 Python 處理時(shí)間的標(biāo)準(zhǔn)庫(kù),提供了獲取系統(tǒng)時(shí)間并格式化輸出的功能,提供系統(tǒng)級(jí)精確計(jì)時(shí)功能,用于程序性能分析。

常用方法

時(shí)間獲取    time()

時(shí)間格式化    strftime(format)

程序計(jì)時(shí)    sleep(seconds)

OS

os 庫(kù)是 Python 標(biāo)準(zhǔn)庫(kù)之一,提供了通用的、基本的操作系統(tǒng)交互功能。

常用方法

打開(kāi)文件   os.open()

返回當(dāng)前工作目錄    os.getcwd()

獲取當(dāng)前進(jìn)程的進(jìn)程ID    os.getpid

psutil

psutil 是一個(gè)開(kāi)源且擴(kuò)平臺(tái)的庫(kù),提供了便利的函數(shù)用來(lái)獲取系統(tǒng)的信息,例如:CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤(pán)等。還可以用來(lái)進(jìn)行進(jìn)程管理。

常用方法

??碈PU個(gè)數(shù)    cpu_count()

獲取當(dāng)前的進(jìn)程對(duì)象    Process()

查看網(wǎng)卡信息統(tǒng)計(jì)    net_io_counters()


代碼實(shí)例:

下面我們將編寫(xiě)兩個(gè)函數(shù),分別是用來(lái)檢測(cè)程序運(yùn)行時(shí)間和程序內(nèi)存占用的情況。同時(shí)編寫(xiě)一個(gè)簡(jiǎn)單的函數(shù),用來(lái)測(cè)試。詳細(xì)代碼如下:

import time
import os
import psutil

def count_time(func):
def int_time():
start_time = time.time()
func()
over_time = time.time()
total_time = over_time - start_time
print("程序運(yùn)行了%s秒" % total_time)
return int_time

def count_info(func):
def float_info():
pid = os.getpid()
p = psutil.Process(pid)
info_start = p.memory_full_info().uss/1024
func()
info_end=p.memory_full_info().uss/1024
print("程序占用了內(nèi)存"+str(info_end-info_start)+"KB")
return float_info

@count_time
@count_info
def main():
a = [i for i in range(10000)]
print(a)

if __name__ == '__main__':
main()

運(yùn)行結(jié)果:


總結(jié)

以上就是關(guān)于如何檢測(cè) Python 測(cè)序的運(yùn)行時(shí)間和內(nèi)存占用情況的全部?jī)?nèi)容。

0 人點(diǎn)贊