5.4模組2:time庫的使用
5.4.1time庫基本介紹
1)time庫是python中處理時間的標準庫:import time time.()
2)功能: 計算機時間的表達 ;提供獲取系統時間並格式化輸出功能 ;提供系統級精確計時功能,用於程式效能分析
3)time庫包括三類函式
- 時間獲取:time() ctime() gmtime()
- 時間格式化:strftime() strptime()
- 程式計時:sleep() perf_counter()
5.4.2詳細函式介紹:
time() 獲取當前時間戳,即計算機內部時間值,浮點數
>>>time.time() 1516939876.6022282
ctime() 獲取當前時間並以易讀方式表示,返回字串
>>>time.ctime() 'fri jan 26 12:11:16 2018'
gmtime()獲取當前時間,表示為計算機可處理的時間格式
>>>time.gmtime()
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=4, tm_min=11, tm_sec=16, tm_wday=4, tm_yday=26, tm_isdst=0)
時間格式化將時間以合理的形式展示出來,類似字串格式化,需要有展示模板,展示模板由特定的格式化控制符組成。
strftime(tpl, ts) tpl是格式化模板字串,用來定義輸出效果 ts是計算機內部時間型別變數
>>>t = time.gmtime()
>>>time.strftime("%y-%m-%d %h:%m:%s",t)
'2018-01-26 12:55:20'
格式化控制符:
格式化字串
日期/時間說明
值範圍和示例
%y年份
0000~9999,例如:1900
%m月份
01~02,例如:10
%b月份名稱
january~december,例如:april
%b月份名稱縮寫
jan~dec,例如:apr
%d日期
01~31,例如:25
%a星期
monday~sunday,例如:wednesday
%a星期縮寫
mon~sun,例如:wed
%h小時(24h制)
00~23,例如:12
%i小時(12h制)
01~12,例如:7
%p上/下午
am,pm,例如:pm
%m分鐘
00~59,例如:26%s秒
00~59,例如:26
程式計時:測量起止動作歷時的過程
測量時間函式:perf_counter()
產生時間函式:sleep()
perf_counter():返回乙個cpu級別的精確時間計數值,單位為秒
由於這個計數值起點不確定,連續呼叫差值才有意義 :
>>>start = time.perf_counter()
318.66599499718114
>>>end = time.perf_counter()
341.3905185375658
>>>end - start
22.724523540384666
sleep(s):s擬休眠的時間,單位是秒,可以是浮點數
>>>def wait():
time.sleep(3.3)
>>>wait()
#程式將等待3.3秒後再退出
python官方文件中文版:
5.5示例4:文字進度條
1)實現:採用字串方式列印可以動態變化的文字進度條 ;進度條需要能在一行中逐漸變化
2)如何獲得文字進度條的變化時間? - 採用sleep()模擬乙個持續的進度
3)單行動態重新整理:
- 重新整理的關鍵是 \r
- 重新整理的本質是:用之後列印的字元覆蓋之前的字元
- 不能換行:print()需要被控制
- 要能回退:列印後游標退回到之前的位置 \r
4)**:
#textprobarv3.py
import time
scale = 50
print("執行開始".center(scale//2,"-"))
start = time.perf_counter()
for i in range(scale+1):
a = '*' *i
b = '.'*(scale-i)
c = (i/scale)*100
dur = time.perf_counter() - start
print("\r%[{}->{}]s".format(c,a,b,dur),end='')
time.sleep(0.1)
print("\n"+"執行結束".center(scale//2,"-"))
**解析:
print("執行開始".center(scale//2,"-")):
center() 方法返回乙個指定的寬度 width 居中的字串,fillchar 為填充的字元,預設為空格,語法str.center(width[, fillchar])。
.center() 控制輸出的樣式,寬度為 50//2,即 25,漢字居中,兩側填充 -
start = time.perf_counter():
呼叫一次perf_counter(),從計算機系統裡隨機選乙個時間點a,計算其距離當前時間點b1有多少秒。當第二次呼叫該函式時,預設從第一次呼叫的時間點a算起,距離當前時間點b2有多少秒。兩個函式取差,即實現從時間點b1到b2的計時功能。
print("\r%[{}->{}]s".format(c,a,b,dur),end=''):
\r用來在每次輸出完成後,將游標移至行首,這樣保證進度條始終在同一行輸出,即在一行不斷重新整理的效果;,輸出格式為居中,佔3位,小數點後0位,浮點型數,對應輸出的數為c;{},對應輸出的數為a;{},對應輸出的數為b;,輸出有兩位小數的浮點數,對應輸出的數為dur;end='',用來保證不換行,不加這句預設換行。
結果:
得不到老師的結果:
原因:?
進度條的單行回退要在命令列(也叫控制台、windows的cmd)下才能使用,idle遮蔽了'\r'的功能。
文字進度條程式使用了 perf_counter() 計時,計時方法適合各類需要統間的算問題,例如:比較不同演算法時間 、統計程式執行時。
進度條可應用在:任何執行時間需要較長的程式中;任何希望提高使用者體驗的應中;進度條是人機互動的紐帶之一
文字進度條的不同設計函式:
4 time獲取時間函式
time獲取時間的函式,一般用來獲取當前時間,或者用於一些不會重複的介面欄位中 format string for dateformat optional 時間的格式字串 非必填 如果不填預設獲取當前時間的毫秒,如果填了,要填寫正確的格式 name of variable in which to s...
Python學習筆記 time
總結在日常的程式設計中,時間的處理應是最常用的過程之一,在python中,一般使用模組time與datetime,本文總結時間訪問和轉換的基礎內容。如下 示例 import time print time.time 當前時間的時間戳 print time.strftime y m d h m s 格...
python學習筆記(4)
函式定義和呼叫 函式就是最基本的一種 抽象的方式 python有許多內建函式 呼叫 要呼叫乙個函式,需要知道函式 的名稱和引數 比較函式cmp x,y 就需要兩個引數,如果 x,就返回 1,如果 x y 就返回 0,如果 x y 就返回1 資料型別轉換函式,不如int 函式可以把其他資料型別轉換為整...