(1)在程序啟動時(shí)獲得當(dāng)前時(shí)間:
創(chuàng)新互聯(lián)專注于清苑企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城開發(fā)。清苑網(wǎng)站建設(shè)公司,為清苑等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
recordTime = time.time()
(2)同時(shí)獲得當(dāng)前時(shí)間的格式化串:
startTime = time.strftime("%H%M%S")
(3)在主循環(huán)中按秒進(jìn)行判斷:
timeGap = time.time() - recordTime
if timeGap = 1: #這是按1秒設(shè)置的,可以根據(jù)實(shí)際需要設(shè)置
recordTime += timeGap
showTime_String = get_lapseTime(startTime, time.strftime("%H%M%S"))
(4)函數(shù):
def get_lapseTime(aTime, bTime):
aNum = 3600 * int(aTime[:2]) + 60 * int(aTime[2:4]) + int(aTime[-2:])
bNum = 3600 * int(bTime[:2]) + 60 * int(bTime[2:4]) + int(bTime[-2:])
gapH = (bNum - aNum) // 3600
gapM = ((bNum - aNum) % 3600) // 60
gapS = ((bNum - aNum) % 3600) % 60
gapTime = "%02d:%02d:%02d"%(gapH,gapM,gapS)
return(gapTime)
使用time.time來統(tǒng)計(jì)函數(shù)的執(zhí)行時(shí)間,程序只會執(zhí)行一次,存在很大的隨機(jī)因素。
timtit包就可以重復(fù)執(zhí)行函數(shù)多次,然后將多次執(zhí)行結(jié)果取平均值。相比起來更優(yōu)。
然而程序執(zhí)行時(shí)間很大程度還受計(jì)算機(jī)性能的影響,衡量程序好壞更靠譜的手段是計(jì)算時(shí)間復(fù)雜度。
1. 使用裝飾器來衡量函數(shù)執(zhí)行時(shí)間
有一個(gè)簡單方法,那就是定義一個(gè)裝飾器來測量函數(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
使用方式的話,就是在要監(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模塊,用來計(jì)算平均時(shí)間消耗。
執(zhí)行下面的腳本可以運(yùn)行該模塊。
這里的timing_functions是Python腳本文件名稱。
在輸出的末尾,可以看到以下結(jié)果:4?loops, best of?5:?2.08?sec per loop
這表示測試了4次,平均每次測試重復(fù)5次,最好的測試結(jié)果是2.08秒。
如果不指定測試或重復(fù)次數(shù),默認(rèn)值為10次測試,每次重復(fù)5次。
3. 使用Unix系統(tǒng)中的time命令
然而,裝飾器和timeit都是基于Python的。在外部環(huán)境測試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
第一行來自預(yù)定義的裝飾器,其他三行為:
real表示的是執(zhí)行腳本的總時(shí)間
user表示的是執(zhí)行腳本消耗的CPU時(shí)間。
sys表示的是執(zhí)行內(nèi)核函數(shù)消耗的時(shí)間。
注意:根據(jù)維基百科的定義,內(nèi)核是一個(gè)計(jì)算機(jī)程序,用來管理軟件的輸入輸出,并將其翻譯成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包
time.sleep() 函數(shù)命名來源于英文單詞time(時(shí)間)和sleep(睡眠)。
time 是python帶的非內(nèi)置庫,使用時(shí)需要import,主要用于處理和時(shí)間相關(guān)的操作。
time.sleep用于給定時(shí)間內(nèi)掛起(等待)當(dāng)前線程的執(zhí)行。
time.sleep() 函數(shù)的例子:
可以注釋掉time.sleep(2)再運(yùn)行一次對比一下
可以看到雖然都是打印出一樣的結(jié)果,但time.sleep()加入了等待時(shí)間
這里還要解釋一下python中線程與進(jìn)程的區(qū)別。
舉個(gè)例子,廚房做菜看成是一個(gè)進(jìn)程,那么這個(gè)進(jìn)程下面就可能有多個(gè)人或一個(gè)人(cpu基本執(zhí)行單元,即線程)來執(zhí)行,多個(gè)人可以分別洗菜,刷碗,擺盤等等同時(shí)作業(yè),他們又是共享這個(gè)廚房的資源的。每個(gè)人存在一定的資源競爭關(guān)系,比如爐火只有1個(gè)。
這里time.sleep是針對線程執(zhí)行的,也就是其中一個(gè)人去sleep睡覺了,不影響其他人的繼續(xù)工作。
參數(shù)
該函數(shù)沒有返回值。
結(jié)果類似如下:
可以看到秒數(shù)相差了5
無
time.sleep()常用于推遲執(zhí)行的場景
在python中,與時(shí)間相關(guān)的模塊有:time,datetime以及calendar
對基礎(chǔ)運(yùn)行環(huán)境有疑問的,推薦參考: python函數(shù)深入淺出 0.基礎(chǔ)篇
python長時(shí)間運(yùn)行 時(shí)間不準(zhǔn)調(diào)整設(shè)置就可以。
這是因?yàn)?,run 函數(shù)不是一瞬間就運(yùn)行完成的。它運(yùn)行也會消耗時(shí)間。
可以使用1秒作為deltatime。如果涉及到更精確的時(shí)間,則還是需要用time.time()來計(jì)算循環(huán)初始時(shí)間,然后在循環(huán)結(jié)尾計(jì)算中間的時(shí)間差來獲得更精準(zhǔn)的deltatime。
python 計(jì)算程序運(yùn)行時(shí)間:
6.760052s
一、import time
二、start =time.clock()
三、#執(zhí)行程序,比如計(jì)算1到100的和。
sum=0
for i in range(1,101):
sum=sum+i
print(sum )
四、end = time.clock()
print('Running time: %s Seconds'%(end-start))#其中end-start就是程序運(yùn)行的時(shí)間,單位是秒。
五、
#全部程序如下
import time
start =time.clock()
sum=0
for i in range(1,101):
sum=sum+i
print(sum )
end = time.clock()
print('Running time: %s Seconds'%(end-start))
#輸出結(jié)果
1、問題:
用python計(jì)算昨天,今天,明天的日期是這個(gè)格式么?Python2.7(r27:82525,Jul42010,09:01:59)[MSCv.150032bit(Intel)]onwin32Type防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
給定你兩個(gè)日期,如何計(jì)算這兩個(gè)日期之間間隔幾天,幾個(gè)星期,幾個(gè)月,幾年?
為什么Python適合科學(xué)計(jì)算?毫不夸張的說,你用python開發(fā)程序只要fortran的1/10時(shí)間。4.其他。它豐富而且統(tǒng)一,不像C++的庫那么雜(好比linux的各種發(fā)行版),python學(xué)好n防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
2、解決方法:
我有個(gè)問題想請教下,如何用python計(jì)算出某目錄中所有文件存...1234567891011import?osimport?datetime?path?=n防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
標(biāo)準(zhǔn)模塊datetime和第三方包dateutil(特別是dateutil的rrule.count方法)能非常簡單迅速的幫你解決這個(gè)問題。
Python構(gòu)造日期對象和計(jì)算日期間天數(shù)差的問題python時(shí)間模塊time,日期模塊datetime,格式化用strftime()importdatetime防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
from dateutil import rrule import datetime def weeks_between(start_date, end_date): weeks = rrule.rrule(rrule.WEEKLY, dtstart=start_date, until=end_date) return weeks.count( )
Python構(gòu)造日期對象和計(jì)算日期間天數(shù)差的問題python時(shí)間模塊time,日期模塊datetime,格式化用strftime()gt;gt;gt;importdatetimegt;gt;gt;help(datetime)查看2009年5月31日和2009...防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
rrule方法允許你根據(jù)日期(DAILY),星期(WEEKLY),年(YEARLY)來設(shè)置尺度計(jì)算。下面用一段代碼來測試一下:
pytho將txt文件轉(zhuǎn)換為列表問:想把這些帶空格的文字轉(zhuǎn)化為python中列表,就是['大數(shù)據(jù)','和’,......]...答:importrecontent="大數(shù)據(jù)和社會"datas=re.s防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
if _ _name_ _=='_ _main_ _': starts = [datetime.date(2005, 01, 04), datetime.date(2005, 01, 03)] end = datetime.date(2005, 01, 10) for s in starts: days = rrule.rrule(rrule.DAILY, dtstart=s, until=end).count( ) print "%d days shows as %d weeks "% (days, weeks_between(s, end))
pytho怎么安裝tensor答:easy_install或者pip都可以,要看你這個(gè)tensor是啥時(shí)候的東西了,應(yīng)該pip能解決!你在python的安裝目錄下找pip,之后放到path里面去,之后運(yùn)行pip--help去看詳細(xì)的命令介紹,很簡單的PS:如果在windows下,python包安裝會很費(fèi)勁,不是少了...防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
將輸出這樣的結(jié)果:
初學(xué)Pytho2.7關(guān)于整數(shù)相加的問題!問:#-*-coding:utf-8-*-sum=0forxin【1,2,3,4,5,6,7,8,9,10】:...答:所說所有的變量都是對象。對象在pytho防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
7 days shows as 1 weeks
如何用pytho寫rhino文件答:1、首先下載MAC版的64位Eclipse,然后解壓縮。2、下載Python。MAC自帶的是的python版本比較老,所以去下個(gè)新版本,下載后安裝,dmg的pyth防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
8 days shows as 2 weeks
為什么python中print可以運(yùn)行,而print"ilo...答:為什么python中print可以運(yùn)行,而防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
Rrule計(jì)算是以整數(shù)計(jì)算的,它不會返回0.5星期之類的結(jié)果,所以8天會被算為兩個(gè)星期。
pytho安裝路徑錯(cuò)誤怎么卸載問:python安裝時(shí)路徑寫錯(cuò),忘記這個(gè)電腦沒沒E盤,安裝失敗,卸載時(shí)總報(bào)錯(cuò),...答:可以重啟一下你的電腦然后安裝電腦管家在電腦上通過工具箱的軟件管理,自動卸載該軟件即防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
當(dāng)然你可以不必定義一個(gè)尺寸,直接一句return rrule.rrule(rrule.WEEKLY, dtstart=start_date, until=end_date).count( )就可以得到結(jié)果。
pytho編寫腳本用于什么測試答:PY可以實(shí)現(xiàn)很多東西的自動化啊主要可以寫一些腳本幫助解決一些重復(fù)性勞作以及解決程序的一些自動化防抓取,突襲網(wǎng)提供內(nèi)容,請查看原文。
希望本文所述對大家的Python程序設(shè)計(jì)有所幫助。