Python 中的 Time 库是什么?实用指南
作者:社区 / 开发者
2023 年 10 月 20 日
导航至
作为一名开发者,您经常需要处理与时间相关的操作,无论是显示当前时间、操作本地时间、计算两个日期之间的时间差等等。Python 提供了一个开箱即用的 time 库,开发者可以使用它来处理与时间相关的操作,例如处理时间戳、测量时间间隔以及以各种方式操作时间。在本指南中,我们将探讨 time 库的基础知识、其关键功能和实际用例。
Python 中的 Time 库是什么?
Python 中的 time 库是一个模块,提供各种函数来处理与时间相关的操作。它是 Python 标准库的一部分。这意味着您可以简单地导入此模块并开始使用它,而无需安装任何其他模块。您可以将 time 库用于任何涉及日期和时间计算、调度操作、测量代码执行等任务。
探索 Time 库:常用函数
让我们来看看 time 库的一些最常用的函数以及一些示例。
1. time()
您可以使用 time()
函数返回当前时间的秒数。它测量自 epoch 开始以来的当前时间,epoch 是一个预定义的时间点,通常可以追溯到 1970 年 1 月 1 日 00:00:00 (UTC)。要返回当前时间,只需在 time 模块中调用函数 time()
。您可以使用以下代码输出当前时间
import time
current_time = time.time()
print("Current time in seconds since the epoch:", current_time)
上面的代码应输出当前时间的秒数,如下所示
Current time in seconds since the epoch: 1694622847.212096
2. ctime()
很多时候您需要以更易于人阅读的格式显示时间。您可以使用 ctime() 函数返回一个字符串,该字符串以易于人阅读的格式表示当前本地时间。它告诉您星期几,后跟日期、时间和年份。您可以使用以下代码输出当前时间
import time
current_local_time = time.ctime()
print("Current local time:", current_local_time)
上面的代码应以易于阅读的格式输出当前时间,如下所示
Current local time: Wed Sep 13 22:05:11 2023
3. gmtime()
当您编写将在世界不同地区运行的代码时,您需要以一致的格式表示时间。为了保持在不同地区和时区都遵循的一致且准确的时间参考,开发者通常以 UTC 格式表示时间,UTC 是协调世界时的缩写。它是一种时间标准,是全球计时的基础。
您可以使用 gmtime()
函数返回表示当前 UTC 时间的时间元组。时间元组包含以下属性
- tm_year
- tm_mon
- tm_mday
- tm_hour
- tm_min
- tm_sec
- tm_wday
- tm_yda
- tm_isdt
- tm_zone
- tm_gmtoff
考虑以下示例
import time
current_utc_time = time.gmtime()
print("Current UTC time:", current_utc_time)
它生成以下输出
Current UTC time: time.struct_time(tm_year=2023, tm_mon=9, tm_mday=13, tm_hour=16, tm_min=45, tm_sec=5, tm_wday=2, tm_yday=256, tm_isdst=0)
如您所见,tm_mon
表示年份的月份,tm_mday
表示日期,tm_hour
表示小时等,所有这些都以 UTC 格式表示。
4. asctime()
之前您看到 gmtime
函数以 UTC 格式提供时间,但它只返回一个时间元组。对于最终用户来说,元组或 struct_time 没有用处。您可以使用 asctime()
函数将时间元组或 struct_time 转换为易于人阅读的格式的字符串。让我们使用之前的示例以易于人阅读的格式显示 UTC 时间
import time
current_time_tuple = time.gmtime()
current_time_string = time.asctime(current_time_tuple)
print("Current UTC time as a string:", current_time_string)
如果您运行上面的代码,您应该以易于人阅读的格式获得相同的 UTC 时间
Current UTC time as a string: Wed Sep 13 17:27:31 2023
5. mktime()
您可以使用 mktime()
函数将时间元组转换为自 epoch 开始以来的秒数。例如,如果您有如下所示的 time_tumple,您可以使用以下代码将其转换为秒数
import time
time_tuple = (2023, 9, 9, 12, 0, 0, 0, 0, 0)
epoch_time = time.mktime(time_tuple)
print("Epoch time:", epoch_time)
这应该为您提供从转换后的元组获得的 epoch 时间(以秒为单位)
Epoch time: 1694241000.0
6. sleep()
有时您需要将某些代码的执行延迟指定的时间量。添加延迟是为 API 添加速率限制以确保它们不超过允许的请求速率的常见用例。例如,如果 API 允许每分钟一百个请求,您可以在每个请求之间添加延迟以保持在限制范围内。您还可以在多线程或多进程应用程序中使用延迟,以在并发任务之间引入延迟。这有助于防止资源过载或争用问题。
对于这种情况,您可以使用 sleep()
函数将某些代码的执行延迟特定的秒数。下面是一个简单的示例,它在代码执行时打印“Start”,并在两秒后打印“End”
import time
print("Start")
time.sleep(2) # Sleep for 2 seconds
print("End")
(图片)
7. strftime()
您还可以使用 strftime
函数将时间元组或 struct_time 转换为基于特定格式的字符串。考虑以下示例。在这里,我们将以一种格式显示当前 UTC 时间,其中时间使用 strftime
函数按年、月、日和时间显示
import time
current_time_tuple = time.gmtime()
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", current_time_tuple)
print("Formatted UTC time:", formatted_time)
上面的代码应以如下所示的指定格式显示时间元组
Formatted UTC time: 2023-09-14 05:08:48
8. strptime()
您甚至可以执行上一个操作的逆操作。如果您有一个要转换为时间元组的时间字符串,则可以使用 strptime()
函数,该函数解析表示日期和时间的字符串并返回时间元组。然后,您可以使用时间元组从时间中提取特定的日、年、月等,或执行任何其他操作。
import time
time_string = "2023-09-09 12:00:00"
time_tuple = time.strptime(time_string, "%Y-%m-%d %H:%M:%S")
print("Parsed time tuple:", time_tuple)
Python Time 库的常见用例
现在您已经基本了解了一些常用的时间函数,让我们看看一些流行的用例。
日期和时间计算
您可以使用 mktime
函数计算两个时间元组之间的时间差(以秒为单位),如下所示
import time
start_time = time.mktime((2023, 9, 1, 0, 0, 0, 0, 0, 0))
end_time = time.mktime((2023, 9, 9, 0, 0, 0, 0, 0, 0))
time_difference = end_time - start_time
print("Time difference in seconds:", time_difference)
当您运行上面的代码时,您将看到输出到控制台的时间差,它表示两个时间元组之间以秒为单位的差值
Time difference in seconds: 691200.0
计算时间差可以在许多地方使用,尤其是在显示有关操作何时完成的信息时。例如,您可以计算当前时间与用户上次更新其信息的时间之间的时间差,并使用该差值来传达信息上次更新的时间。
带时间戳的数据记录
在物联网和其他电子应用中,您可能需要使用时间戳记录数据,例如来自传感器或其他硬件(如温度、湿度等)的信息。您可以使用 strftime1 函数以易于人阅读的格式输出本地时间,并将其与传感器数据一起记录。
这是一个示例
import time
def log_sensor_data(sensor_value):
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(f"{current_time}: Sensor value: {sensor_value}")
# Simulate sensor data
for i in range(1, 6):
sensor_data = i * 10
log_sensor_data(sensor_data)
以下是上面的代码如何运行并显示记录的传感器数据以及时间戳
2023-09-14 10:51:53: Sensor value: 10
2023-09-14 10:51:53: Sensor value: 20
2023-09-14 10:51:53: Sensor value: 30
2023-09-14 10:51:53: Sensor value: 40
2023-09-14 10:51:53: Sensor value: 50
代码分析和基准测试
您可以使用 time 函数生成两个时间,一个标记某些代码执行的开始,另一个标记结束。然后,您可以计算两个时间之间的差值,以确定代码块执行所花费的时间。
import time
def expensive_function():
time.sleep(2)
start_time = time.time()
expensive_function()
end_time = time.time()
execution_time = end_time - start_time
print("Execution time:", execution_time, "seconds")
请注意,我们还使用了 sleep
函数来引入显式延迟,以模拟昂贵的函数执行。上面的代码应为您提供两秒的执行时间
Execution time: 2.0070152282714844 seconds
常见问题解答
如何在 Python 中获取 time 库?
time 库是 Python 标准库的一部分,因此您无需单独安装它。您只需使用 import time
导入它即可。
Python 中的 import time 库是什么?
import time 是用于导入 time 库的 Python 语句,使其函数和类可用于您的代码中。
time() 在 Python 中是如何工作的?
Python 中的 time()
函数返回自 epoch 开始以来的当前时间(以秒为单位)。它允许您测量时间间隔、基准测试代码以及跟踪程序中与时间相关的数据。
这篇文章由 Siddhant Varma 撰写。Siddhant 是一位全栈 JavaScript 开发者,精通前端工程。他曾与印度多家初创公司合作进行扩展,并在 Ed-Tech 和医疗保健行业拥有构建产品的经验。Siddhant 热衷于教学,并且擅长写作。他还向许多毕业生教授编程,帮助他们成为更好的未来开发者。