timeit
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到臺(tái)兒網(wǎng)站設(shè)計(jì)與臺(tái)兒網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋臺(tái)兒地區(qū)。
通常在一段程序的前后都用上time.time(),然后進(jìn)行相減就可以得到一段程序的運(yùn)行時(shí)間,不過(guò)python提供了更強(qiáng)大的計(jì)時(shí)庫(kù):timeit
#導(dǎo)入timeit.timeitfrom timeit import timeit ?
#看執(zhí)行1000000次x=1的時(shí)間:timeit('x=1')#看x=1的執(zhí)行時(shí)間,執(zhí)行1次(number可以省略,默認(rèn)值為1000000):timeit('x=1', number=1)#看一個(gè)列表生成器的執(zhí)行時(shí)間,執(zhí)行1次:timeit('[i for i in range(10000)]', number=1)#看一個(gè)列表生成器的執(zhí)行時(shí)間,執(zhí)行10000次:timeit('[i for i in range(100) if i%2==0]', number=10000)
測(cè)試一個(gè)函數(shù)的執(zhí)行時(shí)間:
from timeit import timeitdef func():
s = 0
for i in range(1000):
?s += i ? ?print(s)# timeit(函數(shù)名_字符串,運(yùn)行環(huán)境_字符串,number=運(yùn)行次數(shù))t = timeit('func()', 'from __main__ import func', number=1000)print(t)
此程序測(cè)試函數(shù)運(yùn)行1000次的執(zhí)行時(shí)間
repeat:
由于電腦永遠(yuǎn)都有其他程序也在占用著資源,你的程序不可能最高效的執(zhí)行。所以一般都會(huì)進(jìn)行多次試驗(yàn),取最少的執(zhí)行時(shí)間為真正的執(zhí)行時(shí)間。
from timeit import repeatdef func():
s = 0
for i in range(1000):
?s += i#repeat和timeit用法相似,多了一個(gè)repeat參數(shù),表示重復(fù)測(cè)試的次數(shù)(可以不寫,默認(rèn)值為3.),返回值為一個(gè)時(shí)間的列表。t = repeat('func()', 'from __main__ import func', number=100, repeat=5)print(t)
print(min(t))
當(dāng)range函數(shù)里面的參數(shù)為單個(gè)變量時(shí),這個(gè)變量#代表是長(zhǎng)度 為6就是要從0開(kāi)始數(shù)到某個(gè)元素為止,這些元素的個(gè)數(shù)一共是6個(gè),如果按照c語(yǔ)言的話可能是這么寫的for(i=0 ;i6;i++)。寫range(6)和range(0,5)沒(méi)有區(qū)別。
用python實(shí)現(xiàn)計(jì)時(shí)器功能,代碼如下:
'''?Simple?Timing?Function.
This?function?prints?out?a?message?with?the?elapsed?time?from?the
previous?call.?It?works?with?most?Python?2.x?platforms.?The?function
uses?a?simple?trick?to?store?a?persistent?variable?(clock)?without
using?a?global?variable.
'''
import?time
def?dur(?op=None,?clock=[time.time()]?):
if?op?!=?None:
duration?=?time.time()?-?clock[0]
print?'%s?finished.?Duration?%.6f?seconds.'?%?(op,?duration)
clock[0]?=?time.time()
#?Example
if?__name__?==?'__main__':
import?array
dur()??#?Initialise?the?timing?clock
opt1?=?array.array('H')
for?i?in?range(1000):
for?n?in?range(1000):
opt1.append(n)
dur('Array?from?append')
opt2?=?array.array('H')
seq?=?range(1000)
for?i?in?range(1000):
opt2.extend(seq)
dur('Array?from?list?extend')
opt3?=?array.array('H')
seq?=?array.array('H',?range(1000))
for?i?in?range(1000):
opt3.extend(seq)
dur('Array?from?array?extend')
#?Output:
#?Array?from?append?finished.?Duration?0.175320?seconds.
#?Array?from?list?extend?finished.?Duration?0.068974?seconds.
#?Array?from?array?extend?finished.?Duration?0.001394?seconds.
網(wǎng)頁(yè)標(biāo)題:python函數(shù)級(jí)計(jì)時(shí)器的簡(jiǎn)單介紹
轉(zhuǎn)載注明:http://jinyejixie.com/article16/doseigg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、微信公眾號(hào)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、微信小程序、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)