含time.sleep的for循环中每10秒打印一次消息的实现方法
实现方案
有两种常见实现方案,分别适配不同的业务场景:
场景1:单次休眠时长固定为10秒
如果你的业务逻辑本身每次休眠就是10秒,直接在循环内按顺序执行即可,代码如下:
import time for count in range(100): time.sleep(10) print(f"第{count + 1}次间隔10秒触发的消息,已完成{count + 1}次休眠") print("累计100次休眠操作全部完成")
场景2:原有业务休眠时长不固定,不可修改原有休眠逻辑
如果你的for循环内原有time.sleep的时长不是10秒,且不能调整原有休眠逻辑,可以用独立的守护线程处理定时打印任务:
import time import threading sleep_total = 0 run_flag = True # 定时打印后台线程 def interval_print(): while run_flag: time.sleep(10) if run_flag: print(f"当前已完成{sleep_total}次休眠") # 启动后台打印线程 threading.Thread(target=interval_print, daemon=True).start() # 原有业务for循环,累计执行100次休眠 for _ in range(100): # 此处替换为你原有业务的休眠/逻辑代码,示例用固定3秒模拟业务休眠 time.sleep(3) sleep_total += 1 # 停止后台打印线程 run_flag = False print("100次休眠操作全部执行完成")
方案说明
- 守护线程不会阻塞主业务逻辑的正常运行,程序结束时会自动销毁
- 全局计数器
sleep_total每次完成一次休眠就累加,保证打印的进度是实时准确的 run_flag标记用来在主业务循环结束后终止打印线程,避免资源浪费
内容的提问来源于stack exchange,提问作者user15354331
相关产品推荐
相关产品推荐

