如何实现Python脚本每日准点每分钟执行(规避sleep误差)
解决定时执行Python脚本的时间偏移与Windows任务计划配置问题
一、Python脚本内精准定时方案(无需DataFrame)
没必要用DataFrame管理时间点,直接通过计算下一次目标执行时间即可实现无偏移定时。核心逻辑是:每次脚本执行完成后,计算下一个每分钟05秒的时间点,再算出当前时间到该点的间隔,仅sleep这个间隔时长,彻底避免time.sleep(60)带来的偏移问题。
示例代码:
import datetime import time import your_script # 导入你要执行的脚本模块 def run_at_target_second(target_second=5): while True: # 执行目标脚本 your_script.main() # 假设脚本入口为main函数 # 获取当前时间 now = datetime.datetime.now() # 计算下一个目标时间:直接取当前时间的下一分钟,秒数固定为target_second next_time = now.replace(minute=0, second=target_second, microsecond=0) + datetime.timedelta(minutes=1) # 如果当前分钟的目标时间还没到(比如脚本提前执行完),则取当前分钟的目标时间 if now < now.replace(second=target_second, microsecond=0): next_time = now.replace(second=target_second, microsecond=0) # 计算需要休眠的时长,避免负数(比如脚本超时错过目标时间) sleep_seconds = max(0, (next_time - now).total_seconds()) if sleep_seconds > 0: time.sleep(sleep_seconds) if __name__ == "__main__": run_at_target_second(target_second=5)
二、Windows任务计划程序配置1分钟重复执行
Windows任务计划的重复间隔设置藏在高级选项里,具体步骤:
- 打开「任务计划程序」,点击「创建任务」
- 「常规」选项卡填写任务名称,按需勾选「不管用户是否登录都要运行」
- 「触发器」选项卡点击「新建」:
- 触发器类型选「每天」,设置起始时间为你需要的首个执行时间(比如
2023-01-09 01:01:05) - 下拉到「高级设置」,勾选「重复任务间隔」,选择「1分钟」,设置「持续时间」为「24小时」(确保每天循环执行)
- 勾选「已启用」后确定
- 触发器类型选「每天」,设置起始时间为你需要的首个执行时间(比如
- 「操作」选项卡点击「新建」:
- 操作选「启动程序」,程序路径填Python解释器路径(比如
C:\Python39\python.exe) - 添加参数填你的脚本绝对路径(比如
"C:\scripts\your_task.py")
- 操作选「启动程序」,程序路径填Python解释器路径(比如
- 按需配置「条件」「设置」选项卡,最后确定完成创建
内容的提问来源于stack exchange,提问作者PyBoss
相关产品推荐
相关产品推荐

