在使用 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)容。