Python轻量级时间管理模块time

time模块


文章目录

  • time模块
    • 一、time模块的核心用途
    • 二、核心方法
      • 1. 获取当前时间戳
      • 2. 时间戳与结构化时间互转
      • 3. 时间格式化与解析
      • 4. 程序休眠与计时
      • 5. 其他实用方法
    • 三、注意事项
    • 四、使用场景
    • 五、使用案例
      • 5.1 案例代码
      • 5.2 案例说明
      • 5.3 案例演示


一、time模块的核心用途

time模块主要用于处理时间戳系统时间操作程序计时休眠
它提供的是基础且高效的时间管理工具。


二、核心方法

1. 获取当前时间戳

  • time.time()
    功能:返回当前时间到“1970年1月1日0点(UTC)”的秒数(含小数位,精确到微秒)。
    用途:计算代码耗时、记录事件时间点。
    示例
    start = time.time()
    # 执行代码...
    end = time.time()
    print(f"耗时:{end - start:.2f}秒")  # 输出:耗时:0.35秒
    

2. 时间戳与结构化时间互转

  • time.localtime([secs])
    功能:将时间戳转为本地时间的结构化对象(struct_time),不传参数则用当前时间。
    示例

    now_struct = time.localtime()
    print(now_struct.tm_year)  # 输出:2025(年份)
    
  • time.mktime(struct_time)
    功能:将struct_time转回时间戳(需注意时区对应)。
    示例

    timestamp = time.mktime(now_struct)  # 与time.time()结果一致
    

3. 时间格式化与解析

  • time.strftime(format, struct_time)
    功能:将时间对象格式化为字符串。
    常用格式符
    %Y:四位年份(如2025)
    %m/%d:两位月/日(如04/15)
    %H:%M:%S:时分秒(如14:30:45)
    示例

    formatted = time.strftime("%Y-%m-%d", now_struct)
    print(formatted)  # 输出:2025-04-15
    
  • time.strptime(string, format)
    功能:将字符串按格式解析为struct_time
    示例

    parsed = time.strptime("2025-04-15", "%Y-%m-%d")
    print(parsed.tm_mon)  # 输出:4(4月)
    

4. 程序休眠与计时

  • time.sleep(seconds)
    功能:让程序暂停执行指定秒数(支持小数)。
    场景:定时任务、避免高频请求。
    示例

    print("等待3秒...")
    time.sleep(3)  # 暂停3秒
    print("继续执行")
    
  • 高精度计时器
    time.perf_counter():适合测量短时间间隔(如函数执行时间)。
    time.monotonic():保证时间不会回退(适合长时间任务)。
    示例

    t1 = time.perf_counter()
    # 执行代码...
    t2 = time.perf_counter()
    print(f"耗时:{t2 - t1:.6f}秒")  # 输出:耗时:0.000123秒
    

5. 其他实用方法

  • time.ctime([secs])
    功能:将时间戳转为易读字符串(如Tue Apr 15 14:30:45 2025)。
    示例

    print(time.ctime())  # 输出:Tue Apr 15 14:30:45 2025
    
  • time.gmtime([secs])
    功能:类似localtime(),但返回UTC时间的结构化对象。


三、注意事项

  1. 时区问题
    localtime()结果依赖系统时区,gmtime()始终用UTC。
    跨时区项目建议用datetime模块结合zoneinfo处理。

  2. 时间戳精度
    不同操作系统下,time.time()的精度可能不同(通常到微秒)。

  3. 休眠误差
    time.sleep(0.1)的实际暂停时间可能略大于0.1秒(系统调度影响)。


四、使用场景

  1. 倒计时功能

    def countdown(seconds):
        for i in range(seconds, 0, -1):
            print(f"剩余:{i}秒", end='\r')
            time.sleep(1)
        print("时间到!")
    
  2. 定时执行任务

    while True:
        print("执行每日任务...")
        time.sleep(86400)  # 24小时后再次执行
    
  3. 性能测试工具

    def measure(func):
        start = time.perf_counter()
        func()
        end = time.perf_counter()
        print(f"函数执行时间:{end - start:.4f}秒")
    

五、使用案例

5.1 案例代码

import time


def show(text, delay=0.05):
    """
    ===逐字显示文本内容===

    参数:
        text (str): 待处理文本,支持中文标点及格式符号
        delay (float): 基础字符间隔时间,默认0.1秒

    功能说明:
        1. 实现字符级逐字打印
        2. 根据标点类型动态调整停顿时间
        3. 处理中文排版特殊符号
        4. 支持文本情感节奏控制
    """

    for w in text:
        # 即时刷新输出缓冲区,避免延迟显示
        print(w, end="", flush=True)

        # 停延处理逻辑
        if w == "\n":
            # 段落换行时延长等待(2倍基础时间)
            time.sleep(delay * 2)
        elif w in (" ", "\t"):
            # 空格/缩进延长等待(3倍基础时间)
            time.sleep(delay * 3)
        elif w in (",", "。", "!", "?", ";"):
            # 中文标点延长等待(1.5倍基础时间)
            time.sleep(delay * 1.5)
        else:
            # 常规字符间隔
            time.sleep(delay)


text = """\t侠客行\n\t唐·李白
赵客缦胡缨,吴钩霜雪明。
银鞍照白马,飒沓如流星。
十步杀一人,千里不留行。
事了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。
将炙啖朱亥,持觞劝侯嬴。
三杯吐然诺,五岳倒为轻。
眼花耳热后,意气素霓生。
救赵挥金槌,邯郸先震惊。
千秋二壮士,烜赫大梁城。
纵死侠骨香,不惭世上英。
谁能书阁下,白首太玄经。
"""

start = time.time()  # 开始时间
show(text)  # 执行函数
end = time.time()  # 结束时间
print(f"\n共计耗时:{end - start:.2f}秒")

current_time = time.localtime()  # 当前时间
formatted_time = time.strftime("当前时间:%Y-%m-%d %H:%M:%S", current_time)
print(formatted_time, "\n")

5.2 案例说明

在Python的print()函数中,flush=True参数用于强制将输出缓冲区的内容立即显示在终端上。

1. 什么是输出缓冲区?

  • 缓冲区机制
    为了提高效率,Python不会立即将每次print()的内容显示在屏幕上,而是先存储在内存中的输出缓冲区,等到一定条件满足时(如缓冲区满、遇到换行符、程序结束)再统一输出。
  • 默认行为
    print()的内容包含换行符(\n)时,缓冲区会自动刷新;
    但如果内容没有换行符(如print("Hello", end="")),则可能不会立即显示。

2. flush=True的作用

  • 强制刷新缓冲区
    无论内容是否包含换行符,flush=True会立即将缓冲区中的内容输出到终端。
  • 应用场景
    实时显示进度(如加载动画、逐字输出)。
    交互式程序(如命令行游戏)。
    调试输出(确保关键信息立即显示)。

5.3 案例演示


Python轻量级时间管理模块time_第1张图片


你可能感兴趣的:(#,Python标准库,python,开发语言)