欢迎访问Python每天3分钟系列。
每天花3分钟时间,学习或温习一个Python知识点。
今天是第027篇:
Python处理时间
处理时间是编程的重要知识,之所以编程就是为了节省时间。接下来几天的3分钟都用来聊Python的时间,time模块,datetime模块,处理时区问题等。
我常用的一个场景是统计一下某个函数的执行时间。这时候我会用time模块。
看代码例子:
import time
# 记录开始时间
start_time = time.time()
# 计算从10000的阶乘
total = 1
for i in range(1, 10000):
total = total * i
# 记录结束时间
end_time = time.time()
# 计算和打印用时
used_time = end_time - start_time
print(f'共用时:{used_time}')
注释写的很清楚,打印结果是:
共用时:0.03346419334411621
这个速度还是比较快的。
解释一下:
-
time模块是python自带的时间模块,它是比较原始的模块 -
time()
是time模块中的一个函数,它返回自从1970年0点到现在一共经历的秒数
看这个例子:
print(time.time())
time.sleep(2)
print(time.time())
打印结果如下:
1641737280.626255
1641737282.6265678
-
第一个结果表示从1970年1月1日开始,到打印的时刻一共经历了1641737280.626255秒。 -
time.sleep()
会让进程暂停指定的秒数,例子中是2秒。 -
第二个打印结果是大约2秒后的时间,也就是1641737282.6265678
其实time模块我最常用的就这两个方法。相信大部分人也够用了。
使用dir()
函数可以列举出time模块中所有的函数:
print(dir(time))
打印结果如下:
['CLOCK_MONOTONIC', 'CLOCK_MONOTONIC_RAW', 'CLOCK_PROCESS_CPUTIME_ID', 'CLOCK_REALTIME', 'CLOCK_THREAD_CPUTIME_ID', 'CLOCK_UPTIME_RAW', '_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock_getres', 'clock_gettime', 'clock_gettime_ns', 'clock_settime', 'clock_settime_ns', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname', 'tzset']
这里不一一讲解了,3分钟不够,需要的时候可以再仔细查看。
测试性能更好的方法
上面我用time.time()可以简单判断一个函数执行的大约时间。但每次时间可能会有差异。如果你的主要目的是为了测试一个函数的性能,还有更好的办法。
那就是:timeit
,但是3分钟结束了,这个留到明天再讲、
原文链接:https://www.afxvip.com/5240.html,转载请注明出处。
评论0