time庫(kù)包含三類時(shí)間函數(shù)
1. 時(shí)間獲取 : time.time() , time.ctime(), time.localtime() , time.gmtime()
2. 時(shí)間格式化 : time.strftime() ,time.strptime()? 互補(bǔ)關(guān)系
3. 程序計(jì)時(shí) :? time.sleep(),time.per_counter()
時(shí)間獲取
time.time()? 獲取的是浮點(diǎn)數(shù) ,以秒為單位绎谦,從1970年到現(xiàn)在累計(jì)的總秒數(shù)
time.ctime() 獲取的是字符串 ,程序員能夠理解的格式
time.localtime() 獲取struct_time 格式 的中國(guó)時(shí)間
time.gmtime() 獲取的是格林威治時(shí)間,生成計(jì)算機(jī)可以處理的時(shí)間格式铭拧,這種格式我們叫它 struct_time 格式
輸出結(jié)果如下:
補(bǔ)充:time.localtime()輸出的也是struct_time格式恃锉,與time.gmtime()類似
區(qū)別在于? 它們的tm_hour 不同 ,一個(gè)是格林威治時(shí)間破托,一個(gè)是當(dāng)?shù)貢r(shí)間(中國(guó)) ,
GMT是格林威治標(biāo)準(zhǔn)時(shí)間的英文縮寫土砂,是國(guó)際標(biāo)準(zhǔn)時(shí)間
local.time 是當(dāng)?shù)貢r(shí)間,中國(guó)在東八區(qū)萝映,比國(guó)際標(biāo)準(zhǔn)時(shí)間早8小時(shí),即GMT+8
時(shí)間格式化
strftime (tpl,ts)? 將struct_time 格式時(shí)間轉(zhuǎn)換為方便讀取的時(shí)間
帶有兩個(gè)參數(shù)??tpl:展示模板蚌卤,定義要輸出的效果? ?ts:計(jì)算機(jī)內(nèi)部時(shí)間類型變量?
舉個(gè)例子:
t = time.localtime()
time.strftime("%Y-%m-%d %H:%M:%S",t)
輸出結(jié)果為:2021-04-10 10:48:37
strptime() 將一段時(shí)間字符串轉(zhuǎn)換為struct_time? 格式
舉個(gè)例子:
timestr = "2021-04-10 10:48:37"
time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
輸出結(jié)果為:time.struct_time(tm_year=2021, tm_mon=4, tm_mday=10, tm_hour=10, tm_min=48, tm_sec=37, tm_wday=5, tm_yday=100, tm_isdst=-1)
記憶法:
strftime: str? format time
strptime: str parser time
程序計(jì)時(shí)
測(cè)量的是起止動(dòng)作所經(jīng)歷時(shí)間的過(guò)程 簡(jiǎn)單來(lái)說(shuō) 就是一段程序從開(kāi)始運(yùn)行到結(jié)束 它經(jīng)歷了多少時(shí)間逊彭。包括?
測(cè)量時(shí)間: perf_counter() : 返回一個(gè)CPU級(jí)別的精確時(shí)間計(jì)數(shù)值构订,單位秒? ,它不是從零開(kāi)始計(jì)算的悼瘾,所以一次調(diào)用沒(méi)有意義? 需要連續(xù)調(diào)用 計(jì)算差值才能體現(xiàn)價(jià)值
產(chǎn)生時(shí)間: time.sleep(3) :? 讓程序休眠3秒 可以是浮點(diǎn)數(shù)
Random常用的兩個(gè)函數(shù)
Python中的隨機(jī)數(shù)使用隨機(jī)數(shù)種子產(chǎn)生
隨機(jī)數(shù)種子: 隨機(jī)數(shù)種子確定了隨機(jī)序列的產(chǎn)生分尸。只要種子相同,產(chǎn)生的隨機(jī)序列箩绍,無(wú)論是每一個(gè)數(shù),還是樹(shù)之間的關(guān)系都是確定的
random.seed()? #? 初始化給定的隨機(jī)數(shù)種子圆到,默認(rèn)為當(dāng)前系統(tǒng)時(shí)間
random.random() # 產(chǎn)生0~1之間的小數(shù)
random.randint(a,b) # 生成a ,b 之間的隨機(jī)整數(shù)
random.uniform(10,100)# 生成a芽淡,b之間的隨機(jī)小數(shù)
random.choice(seq) # 從序列seq中隨機(jī)選中一個(gè)元素random.choice([0,1,2,3,4,5,6,7,8])
random.shuffle(seq) # 返回打亂后的序列
為什么要給種子?
如果你編程中給出了隨機(jī)種子富稻,那么下一次程序再次運(yùn)行白胀,只要種子相同,那么產(chǎn)生的隨機(jī)數(shù)也是相同的或杠。對(duì)于使用隨機(jī)數(shù)的程序,我們可以復(fù)現(xiàn)或者再現(xiàn)你程序運(yùn)行的過(guò)程认境。
如果不使用隨機(jī)數(shù)種子挟鸠,那么它使用的是當(dāng)前系統(tǒng)時(shí)間,而那個(gè)時(shí)間是精確到微秒的兄猩,這個(gè)時(shí)間是我們很難再現(xiàn)的,所以后面產(chǎn)生的程序運(yùn)行的結(jié)果鸠姨,就是完全隨機(jī)淹真,是我們認(rèn)為不可再現(xiàn)的。
所以看我們的程序需求核蘸,如果我們需要再現(xiàn)隨機(jī)過(guò)程,那么我們就設(shè)定種子祟峦,如果說(shuō)只是用隨機(jī)數(shù)徙鱼,不關(guān)心程序別人復(fù)現(xiàn)的結(jié)果 针姿,那我就可以不設(shè)定種子厌衙。