python延時函數(shù)是什么?一起來看看吧!
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站設計、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的普陀網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
python延時函數(shù)即python time sleep() 函數(shù),推遲調(diào)用線程的運行,可通過參數(shù)secs指秒數(shù),表示進程掛起的時間。該函數(shù)沒有返回值,sleep()方法語法:time.sleep(t),t表示推遲執(zhí)行的秒數(shù)。
函數(shù)接收一個指定函數(shù)fn,一個延遲時間ms和指定函數(shù)的參數(shù)*args,在指定延遲后,返回指定函數(shù)fn的調(diào)用結果。函數(shù)使用sleep()方法來進行延遲,然后調(diào)用指定函數(shù)。delay函數(shù)在調(diào)用的時候,可以使用lambda表達式的匿名函數(shù),也可以使用一般函數(shù)。需要注意的是當fn存在關鍵字參數(shù)時會發(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
這需求折騰了我半天..
import time
import datetime as datetime
def late_time(time2):
# 先獲得時間數(shù)組格式的日期
#time2是外部傳入的任意日期
now_time = datetime.datetime.strptime(time2, '%Y-%m-%d')
#如需求是當前時間則去掉函數(shù)參數(shù)改寫 ? ? ?為datetime.datetime.now()
threeDayAgo = (now_time - datetime.timedelta(days =30))
# 轉換為時間戳
timeStamp =int(time.mktime(threeDayAgo.timetuple()))
# 轉換為其他字符串格式
otherStyleTime = threeDayAgo.strftime("%Y-%m-%d")
return otherStyleTime
a = late_time("2019-3-30")
print(a)# 打印2018-02-28
現(xiàn)象描述:
1、time.clock 在win系統(tǒng)和linux系統(tǒng)下對相同程序的計時結果不一致
2、到底應該用什么時間計時?為什么用time.time與time.clock計時會有那么大的差異
在計算機領域有多種時間。
第一種稱作CPU時間或執(zhí)行時間,用于測量在執(zhí)行一個程序時CPU所花費的時間。第二種稱作掛鐘時間,測量執(zhí)行一個程序時的總時間。掛鐘時間也被稱作流逝時間或運行時間。與CPU時間相比,掛鐘時間通常長些,因為CPU執(zhí)行測量的程序可能同時還在執(zhí)行其它程序的指令。
另一個重要概念是所謂的系統(tǒng)時間,由系統(tǒng)時鐘測量。系統(tǒng)時間表示計算機系統(tǒng)時間傳遞的概念。要記住系統(tǒng)時鐘是可以由操作系統(tǒng)修改的,就是修改系統(tǒng)時間。
在Unix系統(tǒng)上,time.time的作用與Windows相同,但time.clock的意義不同。
在Unix系統(tǒng)上,time.clock以秒為單位返回當前處理器時間,例如,執(zhí)行當前線程所花費的CPU時間。而在Windows上,它是以秒為單位的返回自首次調(diào)用該函數(shù)以來所流逝的系統(tǒng)時間。
以我遇到的Ubuntu系統(tǒng)上運行time.time和time.clock的例子:
time.time()顯示系統(tǒng)時間過去大概1秒,而time.clock()顯示花費在當前進程上的CPU時間只有于1毫秒。
而win下time.time()和time.clock()顯示系統(tǒng)時間都是大致過去了1秒
在測量程序準確性能時應該使用哪一個呢?
這要視情況而定。如果程序運行的系統(tǒng)能夠提供足夠的資源給程序,例如,一個運行基于Python的web應用程序的web服務器,則使用time.clock()來測量程序會更有意義,因這個web應用程序可能是服務器上的主要程序 。如果程序運行的系統(tǒng)上還同時運行著其它大量程序,則使用time.time()進行測量會更有意義。 如果不是這樣,就應該使用基于掛鐘的計時器來測量程序的性能,因為這樣通常能反應程序的環(huán)境。
放結論,一般情況下:
1、win用time.clock或time.time
2、linux 下用time.time? 或 datetime.datetime.now().timestamp()
【1】(重要)? ? Python測量時間,用time.time還是time.clock?
1. 使用裝飾器來衡量函數(shù)執(zhí)行時間
有一個簡單方法,那就是定義一個裝飾器來測量函數(shù)的執(zhí)行時間,并輸出結果:
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
使用方式的話,就是在要監(jiān)控的函數(shù)定義上面加上 @fn_timer 就行了
或者
# 可監(jiān)控程序運行時間
import time
import random
def clock(func):
def wrapper(*args, **kwargs):
? ? start_time= time.time()
? ? result= func(*args, **kwargs)
? ? end_time= time.time()
? ? print("共耗時: %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)
輸出結果:共耗時: 0.65634秒
2. 使用timeit模塊
另一種方法是使用timeit模塊,用來計算平均時間消耗。
執(zhí)行下面的腳本可以運行該模塊。
這里的timing_functions是Python腳本文件名稱。
在輸出的末尾,可以看到以下結果:4?loops, best of?5:?2.08?sec per loop
這表示測試了4次,平均每次測試重復5次,最好的測試結果是2.08秒。
如果不指定測試或重復次數(shù),默認值為10次測試,每次重復5次。
3. 使用Unix系統(tǒng)中的time命令
然而,裝飾器和timeit都是基于Python的。在外部環(huán)境測試Python時,unix time實用工具就非常有用。
運行time實用工具:
輸出結果為:
Total?time running random_sort:?1.3931210041?seconds
real?1.49
user?1.40
sys?0.08
第一行來自預定義的裝飾器,其他三行為:
real表示的是執(zhí)行腳本的總時間
user表示的是執(zhí)行腳本消耗的CPU時間。
sys表示的是執(zhí)行內(nèi)核函數(shù)消耗的時間。
注意:根據(jù)維基百科的定義,內(nèi)核是一個計算機程序,用來管理軟件的輸入輸出,并將其翻譯成CPU和其他計算機中的電子設備能夠執(zhí)行的數(shù)據(jù)處理指令。
因此,Real執(zhí)行時間和User+Sys執(zhí)行時間的差就是消耗在輸入/輸出和系統(tǒng)執(zhí)行其他任務時消耗的時間。
4. 使用cProfile模塊
5. 使用line_profiler模塊
6. 使用memory_profiler模塊
7. 使用guppy包
新聞名稱:關于python運行時間函數(shù)的信息
分享網(wǎng)址:http://jinyejixie.com/article12/doscedc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、網(wǎng)站收錄、網(wǎng)站設計、定制網(wǎng)站、網(wǎng)站建設、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)