如何实现每1分钟执行一次函数并在1小时后停止?
实现每1分钟执行函数、1小时后停止的解决方案
简单实现版本
直接在每次执行函数后等待60秒,同时监控总运行时长:
import datetime import time def funcprint(): ct = datetime.datetime.now() print("After 1 minute:-", ct) return # 总运行时长设为1小时(3600秒) total_run_duration = 60 * 60 start_timestamp = time.time() while True: # 执行目标函数 funcprint() # 计算已运行时长 elapsed = time.time() - start_timestamp # 检查剩余时间是否足够再等待1分钟,如果不够就终止循环 if elapsed + 60 > total_run_duration: break # 等待1分钟(60秒) time.sleep(60)
精准间隔版本
如果需要严格保证每1分钟执行一次(避免函数执行耗时导致的间隔累计误差),可以通过计算下一次执行的时间来实现:
import datetime import time def funcprint(): ct = datetime.datetime.now() print("After 1 minute:-", ct) return total_run_duration = 60 * 60 end_timestamp = time.time() + total_run_duration next_run_timestamp = time.time() while time.time() < end_timestamp: funcprint() # 计算下一次执行的时间点 next_run_timestamp += 60 # 计算需要等待的时长,确保间隔准确 wait_duration = next_run_timestamp - time.time() if wait_duration > 0: time.sleep(wait_duration)
关键说明
- 你原来的代码缺少等待逻辑,会导致函数被高频重复调用,完全不符合1分钟间隔的要求
- 简单版本适合对间隔精度要求不高的场景,代码更直观
- 精准版本通过固定下一次执行的时间点,避免了每次函数执行耗时带来的间隔偏差,适合需要严格定时的场景
内容的提问来源于stack exchange,提问作者adss4
相关产品推荐
相关产品推荐

