目录 无参数函数 时区概念 struct_time time.strftime(format[, t]) 无参数函数 先解释一下时间戳,所谓时间戳,即自1970年1月1日00:00:00所经历的秒数,然后就可以理解下面的函数了。下面代码默
目录
- 无参数函数
- 时区概念
- struct_time
- time.strftime(format[, t])
无参数函数
先解释一下时间戳,所谓时间戳,即自1970年1月1日00:00:00所经历的秒数,然后就可以理解下面的函数了。下面代码默认
from time import *
上面五组函数中,只有time.time()的值具有绝对的意义,其他值都只具有相对的意义。
通过get_clock_info函数可以查看这些时钟的特性,其输入输出分别为
其中,
- 如果时钟可以自动更改或由系统管理员手动更改,则adjustable为True,否则为False。
- implementation表示用于获取时钟值的基础C函数的名称。
- 如果时钟不能倒退,则monotonic为 True,否则为 False 。
- resolution表示以秒为单位的时钟分辨率。
接下来可以测试一下这些时钟的特性。
>>> def test(n): ... aTime = time.time() ... aTh = time.thread_time() ... aPr = time.process_time() ... aMo = time.monotonic() ... aPe = time.perf_counter() ... for i in range(int(n)): j = i**2 ... bTime = time.time() ... bTh = time.thread_time() ... bPr = time.process_time() ... bMo = time.monotonic() ... bPe = time.perf_counter() ... aStr = f'aTime={aTime},aTh={aTh},aPr={aPr},aMo={aMo},aPe={aPe}\n' ... bStr = f'bTime={bTime},bTh={bTh},bPr={bPr},bMo={bMo},bPe={bPe}' ... print(aStr+bStr) ... >>> test(1e6) aTime=1634625786.136904,aTh=0.03125,aPr=0.03125,aMo=199082.078,aPe=199085.4751224 bTime=1634625786.340363,bTh=0.234375,bPr=0.234375,bMo=199082.281,bPe=199085.6787309 >>> test(1e6) aTime=1634625789.7817287,aTh=0.234375,aPr=0.234375,aMo=199085.734,aPe=199089.1195357 bTime=1634625789.981198,bTh=0.421875,bPr=0.421875,bMo=199085.921,bPe=199089.3195721 >>> test(1e6) aTime=1634625796.3934195,aTh=0.421875,aPr=0.421875,aMo=199092.343,aPe=199095.731209 bTime=1634625796.5789576,bTh=0.609375,bPr=0.609375,bMo=199092.531,bPe=199095.9172852 >>>
可清晰地看到,在调用test
的间隔中,thread_time
和process_time
并未发生变化,即二者不计算线程或者进程休眠时的时间。
一般在time
模块中,最常用的两个函数分别是time.time()
和time.sleep()
,前者用于获取时间戳,从而统计程序运行时长;后者则可以暂停线程。
可以通过time.thread_time()
来检测sleep
函数的功能
>>> def test(n): ... aTime = time.time() ... aTh = time.thread_time() ... aPr = time.process_time() ... time.sleep(n) ... bTime = time.time() ... bTh = time.thread_time() ... bPr = time.process_time() ... aStr = f'aTime={aTime},aTh={aTh},aPr={aPr}\n' ... bStr = f'bTime={bTime},bTh={bTh},bPr={bPr}' ... print(aStr+bStr) ... >>> test(1) aTime=1634649370.2819958,aTh=0.640625,aPr=0.640625 bTime=1634649371.2862759,bTh=0.640625,bPr=0.640625 >>> test(1) aTime=1634649372.72013,aTh=0.640625,aPr=0.640625 bTime=1634649373.723695,bTh=0.640625,bPr=0.640625 >>> test(1)
时区概念
接下来需要介绍一些有关时间的概念
GMT
:即格林威治标准时间。
UTC
:世界协调时间,比格林威治更精确。
DST
:D即Daylight,表示夏令时。
CST
:美国、澳大利亚、中国、古巴的标准时间。
知道这些时区的概念之后,就能理解time
中的常量:
struct_time
为了更好地表示时间,time
中封装了struct_time
类,其成员包括
在了解struct_time这一数据结构之后,就能读懂下列函数。
time.strftime(format[, t])
可以将struct_time
通过匹配符进行格式化输出,其转换格式为
周日作为第一天
strptime()
为其反函数。
例如
>>> t = time.strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) >>> t 'Tue, 19 Oct 2021 13:46:37 +0000' >>> T = time.strptime(t,"%a, %d %b %Y %H:%M:%S +0000") >>> T time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=13, tm_min=46, tm_sec=37, tm_wday=1, tm_yday=292, tm_isdst=-1)
以上就是表格梳理解析python内置时间模块看完就懂的详细内容,更多关于python内置时间模块的资料请关注易盾网络其它相关文章!