Python 中的 Time 库是什么?实用指南

导航至

作为一名开发者,您经常需要处理与时间相关的操作,无论是显示当前时间、操作本地时间、计算两个日期之间的时间差等等。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 热衷于教学,并且擅长写作。他还向许多毕业生教授编程,帮助他们成为更好的未来开发者。