關(guān)于python運(yùn)行時(shí)間函數(shù)的信息

python延時(shí)函數(shù)

python延時(shí)函數(shù)是什么?一起來(lái)看看吧!

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的普陀網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

python延時(shí)函數(shù)即python time sleep() 函數(shù),推遲調(diào)用線(xiàn)程的運(yùn)行,可通過(guò)參數(shù)secs指秒數(shù),表示進(jìn)程掛起的時(shí)間。該函數(shù)沒(méi)有返回值,sleep()方法語(yǔ)法:time.sleep(t),t表示推遲執(zhí)行的秒數(shù)。

函數(shù)接收一個(gè)指定函數(shù)fn,一個(gè)延遲時(shí)間ms和指定函數(shù)的參數(shù)*args,在指定延遲后,返回指定函數(shù)fn的調(diào)用結(jié)果。函數(shù)使用sleep()方法來(lái)進(jìn)行延遲,然后調(diào)用指定函數(shù)。delay函數(shù)在調(diào)用的時(shí)候,可以使用lambda表達(dá)式的匿名函數(shù),也可以使用一般函數(shù)。需要注意的是當(dāng)fn存在關(guān)鍵字參數(shù)時(shí)會(huì)發(fā)生異常。

例如:

#!/usr/bin/python import?time ? print?"Start?:?%s"?%?time.ctime() time.sleep(?5?) print?"End?:?%s"?%?time.ctime() Start?:?Tue?Feb?17?10:19:18?2013 End?:?Tue?Feb?17?10:19:23?2013 from?time?import?sleepdef?delay(fn,?ms,?*args): ??sleep(ms?/?1000) ??return?fn(*args)#?EXAMPLESdelay( ??lambda?x:?print(x), ??1000, ??'later')?#?prints?'later'?after?one?second

Python獲取當(dāng)前時(shí)間前、后一個(gè)月的函數(shù)

這需求折騰了我半天..

import time

import datetime as datetime

def late_time(time2):

# 先獲得時(shí)間數(shù)組格式的日期

#time2是外部傳入的任意日期

now_time = datetime.datetime.strptime(time2, '%Y-%m-%d')

#如需求是當(dāng)前時(shí)間則去掉函數(shù)參數(shù)改寫(xiě) ? ? ?為datetime.datetime.now()

threeDayAgo = (now_time - datetime.timedelta(days =30))

# 轉(zhuǎn)換為時(shí)間戳

timeStamp =int(time.mktime(threeDayAgo.timetuple()))

# 轉(zhuǎn)換為其他字符串格式

otherStyleTime = threeDayAgo.strftime("%Y-%m-%d")

return otherStyleTime

a = late_time("2019-3-30")

print(a)# 打印2018-02-28

Python測(cè)量程序運(yùn)行時(shí)間,time.time與time.clock

現(xiàn)象描述:

1、time.clock 在win系統(tǒng)和linux系統(tǒng)下對(duì)相同程序的計(jì)時(shí)結(jié)果不一致

2、到底應(yīng)該用什么時(shí)間計(jì)時(shí)?為什么用time.time與time.clock計(jì)時(shí)會(huì)有那么大的差異

在計(jì)算機(jī)領(lǐng)域有多種時(shí)間。

第一種稱(chēng)作CPU時(shí)間或執(zhí)行時(shí)間,用于測(cè)量在執(zhí)行一個(gè)程序時(shí)CPU所花費(fèi)的時(shí)間。第二種稱(chēng)作掛鐘時(shí)間,測(cè)量執(zhí)行一個(gè)程序時(shí)的總時(shí)間。掛鐘時(shí)間也被稱(chēng)作流逝時(shí)間或運(yùn)行時(shí)間。與CPU時(shí)間相比,掛鐘時(shí)間通常長(zhǎng)些,因?yàn)镃PU執(zhí)行測(cè)量的程序可能同時(shí)還在執(zhí)行其它程序的指令。

另一個(gè)重要概念是所謂的系統(tǒng)時(shí)間,由系統(tǒng)時(shí)鐘測(cè)量。系統(tǒng)時(shí)間表示計(jì)算機(jī)系統(tǒng)時(shí)間傳遞的概念。要記住系統(tǒng)時(shí)鐘是可以由操作系統(tǒng)修改的,就是修改系統(tǒng)時(shí)間。

在Unix系統(tǒng)上,time.time的作用與Windows相同,但time.clock的意義不同。

在Unix系統(tǒng)上,time.clock以秒為單位返回當(dāng)前處理器時(shí)間,例如,執(zhí)行當(dāng)前線(xiàn)程所花費(fèi)的CPU時(shí)間。而在Windows上,它是以秒為單位的返回自首次調(diào)用該函數(shù)以來(lái)所流逝的系統(tǒng)時(shí)間。

以我遇到的Ubuntu系統(tǒng)上運(yùn)行time.time和time.clock的例子:

time.time()顯示系統(tǒng)時(shí)間過(guò)去大概1秒,而time.clock()顯示花費(fèi)在當(dāng)前進(jìn)程上的CPU時(shí)間只有于1毫秒。

而win下time.time()和time.clock()顯示系統(tǒng)時(shí)間都是大致過(guò)去了1秒

在測(cè)量程序準(zhǔn)確性能時(shí)應(yīng)該使用哪一個(gè)呢?

這要視情況而定。如果程序運(yùn)行的系統(tǒng)能夠提供足夠的資源給程序,例如,一個(gè)運(yùn)行基于Python的web應(yīng)用程序的web服務(wù)器,則使用time.clock()來(lái)測(cè)量程序會(huì)更有意義,因這個(gè)web應(yīng)用程序可能是服務(wù)器上的主要程序 。如果程序運(yùn)行的系統(tǒng)上還同時(shí)運(yùn)行著其它大量程序,則使用time.time()進(jìn)行測(cè)量會(huì)更有意義。 如果不是這樣,就應(yīng)該使用基于掛鐘的計(jì)時(shí)器來(lái)測(cè)量程序的性能,因?yàn)檫@樣通常能反應(yīng)程序的環(huán)境。

放結(jié)論,一般情況下:

1、win用time.clock或time.time

2、linux 下用time.time? 或 datetime.datetime.now().timestamp()

【1】(重要)? ? Python測(cè)量時(shí)間,用time.time還是time.clock?

7種檢測(cè)Python程序運(yùn)行時(shí)間、CPU和內(nèi)存占用的方法

1. 使用裝飾器來(lái)衡量函數(shù)執(zhí)行時(shí)間

有一個(gè)簡(jiǎn)單方法,那就是定義一個(gè)裝飾器來(lái)測(cè)量函數(shù)的執(zhí)行時(shí)間,并輸出結(jié)果:

import time

from functoolsimport wraps

import random

def fn_timer(function):

@wraps(function)

def function_timer(*args, **kwargs):

? t0= time.time()

? result= function(*args, **kwargs)

? t1= time.time()

? print("Total time running %s: %s seconds" %

? ? ? (function.__name__, str(t1- t0))

)

? return result

return function_timer

@fn_timer

def random_sort(n):

return sorted([random.random() for i in range(n)])

if __name__== "__main__":

random_sort(2000000)

輸出:Total time running random_sort: 0.6598007678985596 seconds

使用方式的話(huà),就是在要監(jiān)控的函數(shù)定義上面加上 @fn_timer 就行了

或者

# 可監(jiān)控程序運(yùn)行時(shí)間

import time

import random

def clock(func):

def wrapper(*args, **kwargs):

? ? start_time= time.time()

? ? result= func(*args, **kwargs)

? ? end_time= time.time()

? ? print("共耗時(shí): %s秒" % round(end_time- start_time, 5))

? ? return result

return wrapper

@clock

def random_sort(n):

return sorted([random.random() for i in range(n)])

if __name__== "__main__":

random_sort(2000000)

輸出結(jié)果:共耗時(shí): 0.65634秒

2. 使用timeit模塊

另一種方法是使用timeit模塊,用來(lái)計(jì)算平均時(shí)間消耗。

執(zhí)行下面的腳本可以運(yùn)行該模塊。

這里的timing_functions是Python腳本文件名稱(chēng)。

在輸出的末尾,可以看到以下結(jié)果:4?loops, best of?5:?2.08?sec per loop

這表示測(cè)試了4次,平均每次測(cè)試重復(fù)5次,最好的測(cè)試結(jié)果是2.08秒。

如果不指定測(cè)試或重復(fù)次數(shù),默認(rèn)值為10次測(cè)試,每次重復(fù)5次。

3. 使用Unix系統(tǒng)中的time命令

然而,裝飾器和timeit都是基于Python的。在外部環(huán)境測(cè)試Python時(shí),unix time實(shí)用工具就非常有用。

運(yùn)行time實(shí)用工具:

輸出結(jié)果為:

Total?time running random_sort:?1.3931210041?seconds

real?1.49

user?1.40

sys?0.08

第一行來(lái)自預(yù)定義的裝飾器,其他三行為:

real表示的是執(zhí)行腳本的總時(shí)間

user表示的是執(zhí)行腳本消耗的CPU時(shí)間。

sys表示的是執(zhí)行內(nèi)核函數(shù)消耗的時(shí)間。

注意:根據(jù)維基百科的定義,內(nèi)核是一個(gè)計(jì)算機(jī)程序,用來(lái)管理軟件的輸入輸出,并將其翻譯成CPU和其他計(jì)算機(jī)中的電子設(shè)備能夠執(zhí)行的數(shù)據(jù)處理指令。

因此,Real執(zhí)行時(shí)間和User+Sys執(zhí)行時(shí)間的差就是消耗在輸入/輸出和系統(tǒng)執(zhí)行其他任務(wù)時(shí)消耗的時(shí)間。

4. 使用cProfile模塊

5. 使用line_profiler模塊

6. 使用memory_profiler模塊

7. 使用guppy包

新聞名稱(chēng):關(guān)于python運(yùn)行時(shí)間函數(shù)的信息
分享網(wǎng)址:http://muchs.cn/article12/doscedc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站收錄、網(wǎng)站設(shè)計(jì)、定制網(wǎng)站、網(wǎng)站建設(shè)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司