欢迎访问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分钟结束了,这个留到明天再讲、

声明:本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。反馈邮箱:1159995880@qq.com