如何用datetime库与%运算符每隔10秒打印时间?当前代码仅输出一次
问题分析与解决方案
你的代码只打印一次的核心问题有两个:
now_utc在循环外仅初始化一次,后续计算的是固定初始时间与当前时间的差值,这个差值只会在刚好是10秒整数倍的瞬间满足%10 == 0,之后差值持续增大,再也不会回到10的整数倍。- 循环无任何延迟,会疯狂占用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
相关产品推荐
相关产品推荐

