Python中定时触发代码:如何获取指定分钟/秒数计数
实现Python定时触发并获取倒计时计数
嘿,这个需求我刚好做过类似的,给你分享几个实用的方案,既能实现3分钟后触发代码,还能轻松获取剩余时间的计数(而不是已用时间):
方法1:基于time模块的简单倒计时触发
这种方式最直接,适合不需要主程序做其他事情的场景。我们先设定总倒计时秒数(180秒),然后循环递减,每次sleep1秒,这样就能实时拿到剩余的秒数计数,直到计数归0时触发目标代码:
import time def trigger_code(): print("3分钟到啦!执行目标代码~") # 总倒计时秒数 total_seconds = 180 for remaining in range(total_seconds, 0, -1): # 这里可以拿到剩余秒数计数,想转分钟的话直接//60就行 minutes = remaining // 60 seconds = remaining % 60 print(f"剩余时间: {minutes}分{seconds}秒", end="\r") # 换行覆盖实现动态显示 time.sleep(1) # 倒计时结束,触发代码 trigger_code()
方法2:基于datetime的灵活倒计时(适合多任务场景)
如果你的主程序还要同时处理其他逻辑,不想被sleep阻塞,可以用datetime模块记录触发时间,然后定时检查当前时间和触发时间的差值,获取剩余时间计数:
import datetime import time def trigger_code(): print("3分钟到啦!执行目标代码~") # 计算3分钟后的触发时间 trigger_time = datetime.datetime.now() + datetime.timedelta(minutes=3) while datetime.datetime.now() < trigger_time: # 计算剩余时间 remaining_time = trigger_time - datetime.datetime.now() # 转换成总秒数,或者拆分成分秒 total_remaining = int(remaining_time.total_seconds()) minutes = total_remaining // 60 seconds = total_remaining % 60 print(f"剩余时间: {minutes}分{seconds}秒", end="\r") time.sleep(1) # 每秒检查一次,避免占用过多CPU trigger_code()
方法3:用线程实现非阻塞倒计时
如果主程序完全不能被耽误,那就把倒计时和触发逻辑放到单独的线程里,这样主程序该干嘛干嘛,倒计时在后台运行:
import time import threading def countdown_and_trigger(): total_seconds = 180 for remaining in range(total_seconds, 0, -1): minutes = remaining // 60 seconds = remaining % 60 print(f"剩余时间: {minutes}分{seconds}秒", end="\r") time.sleep(1) trigger_code() def trigger_code(): print("\n3分钟到啦!执行目标代码~") # 启动倒计时线程 countdown_thread = threading.Thread(target=countdown_and_trigger) countdown_thread.start() # 主程序继续执行其他逻辑 print("主程序正在处理其他任务...")
这几种方法都能轻松获取剩余时间的计数,你可以根据自己的程序场景选最合适的~
内容的提问来源于stack exchange,提问作者Salman Ahsan
相关产品推荐
相关产品推荐

