time库一用于处理事件相关功能
告知
这篇笔记是在学习了Python二级教程(杨文,管德永,王召强主编)(中国海洋大学出版社出版)后写的,内容雷同,如有侵权,请联系我删除,谢谢!!!
相关术语
呈现时间的格式:
时间戳
从1970年1月1日00:00:00开始计时的按秒计算的偏移量;eg: 1619761802.7536848
字符串
没有固定格式,可以自己设置,相关格式化语言给出
%Y一年份一 0001-9999(eg:1999)一 若y小写,则只显示后两位数字;
%m一 月份一 01-12
%B一 月名一 January-December
%b一 月名缩写一 Jan-Dec
%d一 日期一 01-31
%A一 星期一 Monday-Sunday
%a一 星期缩写一 Mon-Sun
%H一 小时(24h制)一 00-23
%I一 小时(12h制)一 01-12
%p一 上下午一 AM,PM
%M一 分钟一 00-59
%S一 秒一 00-59
struct_time对象
eg:time.struct_time(tm_year=2021, tm_mon=4, tm_mday=30, tm_hour=5, tm_min=50, tm_sec=2, tm_wday=4, tm_yday=120, tm_isdst=0)
参数:
tm_year一年份,整数
tm_mon一月份[1,12]
tm_mday一日期[1,31]
tm_hour一小时[0,23]
tm_min一分钟[0,59]
tm_sec一秒[0,59]
tm_wday一星期[0,6](0代表星期一)
tm_yday一该年中的第几天[0,366]
tm_isdst一是否为夏令时,0否,1是,-1未知
UTC 世界协调时
格林尼治天文时间,我国为UTC+8;
DST 夏令时
时间处理
time()
获取当前时间的时间戳
gmtime()
获取当前时间戳对应的struct_time对象(0时区的时间)
localtime()
获取当前时间戳对应的本地时间(北京时间)struct_time对象(8时区的时间)
ctime(时间戳)
获取当前时间戳对应的易读字符串表示,内部调用localtime函数会输出当前时间
import time
print(time.time())
#1619761802.7536848
print(time.gmtime())
#time.struct_time(tm_year=2021, tm_mon=4, tm_mday=30, tm_hour=5, tm_min=50, tm_sec=2, tm_wday=4, tm_yday=120, tm_isdst=0)
print(time.localtime())
#time.struct_time(tm_year=2021, tm_mon=4, tm_mday=30, tm_hour=13, tm_min=50, tm_sec=2, tm_wday=4, tm_yday=120, tm_isdst=0)
print(time.ctime())
#Fri Apr 30 13:50:02 2021,答案用这样的格式显示
时间格式化
mktime()
将struct_time对象转化为时间戳
strftime()
将任何通用格式转化为一个格式化字符串的形式表示(格式化字符串形式见“相关知识-字符串”)
strptime()
提取字符串的时间生成struct_time对象
import time
print(time.localtime())
#time.struct_time(tm_year=2021, tm_mon=4, tm_mday=30, tm_hour=14, tm_min=24, tm_sec=13, tm_wday=4, tm_yday=120, tm_isdst=0)
print(time.mktime(time.localtime()))
#1619763853.0
print(time.strftime('%Y-%b-%d-%A %p-%H-%M',time.localtime()))
#2021-Apr-30-Friday PM-14-24
a=time.strftime('%Y-%b-%d-%A %p-%H-%M',time.localtime())
print(time.strptime(a,'%Y-%b-%d-%A %p-%H-%M'))
#time.struct_time(tm_year=2021, tm_mon=4, tm_mday=30, tm_hour=14, tm_min=24, tm_sec=0, tm_wday=4, tm_yday=120, tm_isdst=-1)
计时
计时三要素
程序开始,结束时间;
程序总运行时间
程序各核心模块运行时间
sleep()
线程睡眠指定时间,单位为秒
monotonic()
返回单调时钟的时间(即不能倒流时间的时钟),时钟不受系统时间更新的影响。
***返回值的参考点未定,因此只有连续调用结果之间的差异才有效。
perf_counter()
返回性能计数器的值(以分秒为单位),即具有最高可用分辨率的时间,以测量短持续时间,包括在睡眠时间和系统范围内流逝的时间。
***返回值的参考点未定,因此只有连续调用结果之间的差异才有效。
import time
def fun1():
time.sleep(0.2)
def fun2():
a=10**6
while a>0:
a-=10
def fun3():
time.sleep(0.5)
def main():
stime=time.localtime()
firsttime=time.mktime(stime)
print("程序运行开始时间:",time.strftime('%Y-%m-%d %H:%M:%S',stime))
PC1=time.perf_counter()
fun1()
PC2=time.perf_counter()
fun1_usetime=PC2-PC1
fun2()
PC3=time.perf_counter()
fun2_usetime=PC3-PC2
fun3()
PC4=time.perf_counter()
fun3_usetime=PC4-PC3
PC5=time.perf_counter()
total_time=PC5-PC1
print("fun1运行时间为:{}秒".format(fun1_usetime))
print("fun2运行时间为:{}秒".format(fun2_usetime))
print("fun3运行时间为:{}秒".format(fun3_usetime))
print("总运行时间为:{}秒".format(total_time))
etime=time.localtime()
lasttime=time.mktime(etime)
totaltime=lasttime-firsttime
print("总时间是:{}".format(totaltime))
print("整体运行结束时间:",time.strftime('%Y-%m-%d %H:%M:%S',etime))
if __name__=="__main__":
main()
'''
程序运行开始时间: 2021-04-30 14:43:47
fun1运行时间为:0.21490160000000003秒
fun2运行时间为:0.009154999999999969秒
fun3运行时间为:0.5145016000000001秒
总运行时间为:0.7385627000000001秒
总时间是:1.0
整体运行结束时间: 2021-04-30 14:43:48
'''