python time模块详解2

一、time模块的处理对象

time模块的主要功能用于时间表示方法之间的转换和程序的时间控制。

包括三个时间表示方法:时间戳(float)、时间元组(tuple)、格式化时间(string)。

1.时间戳

以格林威治时间1970年01月01日00时00分00秒为零点(北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒),开始计算的总秒数。

2.时间元组

用一个元组封装起来的9组数字处理时间。struct_time元组也是相同结构。

3.格式化时间

以文字格式输出的时间,python中时间日期格式化符号:

二、常用方法

1.返回时间戳

  • 当前时间的时间戳:time.time()
  • 时间元组→时间戳:time.mktime(<时间元组>)
>>> import time
>>> time.mktime((1972,1,1,1,1,1,0,0,0))
63046861.0

2.返回时间元组(struct_time)

  • 时间戳→时间元组(当地):time.localtime(<时间戳>)
  • 时间戳→时间元组(格林威治):time.gmtime(<时间戳>)
  • 格式化时间→时间元组:time.strptime(<自定义的格式><%符号>)
>>> import time
>>> time.localtime(15564845527)
time.struct_time(tm_year=2463, tm_mon=3, tm_mday=26, tm_hour=0, tm_min=12, tm_sec=7, tm_wday=0, tm_yday=85, tm_isdst=0)
>>> time.gmtime(15564845527)
time.struct_time(tm_year=2463, tm_mon=3, tm_mday=25, tm_hour=16, tm_min=12, tm_sec=7, tm_wday=6, tm_yday=84, tm_isdst=0)
>>> time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X') 
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)

3.返回格式化时间

  • 时间元组→自定义格式:time.strftime(<格式化的符号>,<时间元组>)
  • 时间元组→标准格式:time.asctime(<时间元组>)
  • 时间戳→标准格式:time.ctime(<时间戳>)
>>> import time
>>> time.strftime('%Y-%m-%d %X',(1972,1,1,1,1,1,0,0,0))
'1972-01-01 01:01:01'
>>> time.asctime((1972,1,1,1,1,1,0,0,0))
'Mon Jan  1 01:01:01 1972'
>>> time.ctime(15564845527)
'Mon Mar 26 00:12:07 2463'

三、关于程序时间控制

1.time.sleep()

推迟调用线程的运行的秒数:time.sleep(<秒数>)。

2.time.perf_counter()

返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。

3.time.process_time()

返回当前进程执行 CPU 的时间总和,不包含睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。

#程序1
import time
a = 0
t1 = time.perf_counter()
for i in range(2**23):
    a = a + 1
t2 = time.perf_counter()
print(t2-t1)
#输出
>>> %Run main.py
0.7979674

#程序2
import time
a = 0
t1 = time.perf_counter()
time.sleep(1)            #程序睡眠1秒
for i in range(2**23):
    a = a + 1
t2 = time.perf_counter() 
print(t2-t1)
#输出
>>> %Run main.py         #睡眠时间计入
1.8240009

#程序3
import time
a = 0
t1 = time.process_time()
time.sleep(1)            #程序睡眠1秒
for i in range(2**23):
    a = a + 1
t2 = time.process_time()
print(t2-t1)
#输出
>>> %Run main.py         #睡眠时间不计入
0.8125
posted @ 2024-03-05 15:14  挖坑达人  阅读(10)  评论(0)    收藏  举报