You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用datetime库与%运算符每隔10秒打印时间?当前代码仅输出一次

问题分析与解决方案

你的代码只打印一次的核心问题有两个:

  1. now_utc在循环外仅初始化一次,后续计算的是固定初始时间与当前时间的差值,这个差值只会在刚好是10秒整数倍的瞬间满足%10 == 0,之后差值持续增大,再也不会回到10的整数倍。
  2. 循环无任何延迟,会疯狂占用CPU资源。

结合你要求的%运算符和datetime包,修正后的代码如下:

from datetime import datetime, timezone
import time

# 初始化基准时间为当前UTC时间,先打印一次初始时间
last_print = datetime.now(timezone.utc)
print(time.ctime())

while True:
    current_utc = datetime.now(timezone.utc)
    time_diff = (current_utc - last_print).total_seconds()
    # 当时间差是10的整数倍,且至少过了10秒(避免同一秒内重复触发)
    if time_diff % 10 == 0 and time_diff >= 10:
        print(time.ctime())
        last_print = current_utc  # 更新基准时间,为下一次判断做准备
    time.sleep(0.1)  # 加短延迟,降低CPU消耗

关键修正点

  • 每次打印后更新last_print为当前时间,让后续的时间差计算以上次打印时间为基准,确保每过10秒触发一次。
  • 增加time.sleep(0.1),避免循环无间断执行,大幅降低CPU占用。
  • 加入time_diff >= 10的判断,防止因循环执行速度过快,在同一秒内多次触发打印。

内容的提问来源于stack exchange,提问作者bbartling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:05:18