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

Python如何实现函数每日重复执行500次?附schedule示例代码

你现有代码仅支持每日固定时间点执行1次任务,无法满足单日执行500次的需求,且使用了Python2版本的print语法,在Python3环境下会直接报错。以下是两种可直接运行的实现方案:

方案1:24小时均匀分散执行500次

单日总时长为86400秒,将500次执行均匀分配的话,单次任务间隔为86400 / 500 = 172.8秒(约2分53秒),通过每日计数重置逻辑即可实现每日稳定跑满500次,负载压力最平稳:

import schedule
import time
from datetime import date

# 初始化执行状态
exec_count = 0
current_day = date.today()

def job():
    global exec_count
    # 替换为你的实际业务逻辑
    print(f"任务执行中,今日已完成 {exec_count + 1}/500 次")
    exec_count += 1

def reset_daily_stat():
    """每日零点重置当日执行计数"""
    global exec_count, current_day
    exec_count = 0
    current_day = date.today()

# 绑定定时规则
schedule.every().day.at("00:00").do(reset_daily_stat)
schedule.every(172.8).seconds.do(job)

if __name__ == "__main__":
    while True:
        schedule.run_pending()
        # 缩短休眠间隔避免漏执行,资源占用可忽略
        time.sleep(1)

适用场景:对任务执行的具体时间点无严格要求,希望避免瞬时任务压力打满服务/触发接口限流的场景。

方案2:固定时段集中执行500次

如果你需要在指定的低峰时段(比如凌晨1点)一次性跑完当日所有500次任务,可以在定时触发的任务内加循环控制执行次数:

import schedule
import time

def batch_job():
    total_exec = 500
    for i in range(total_exec):
        # 替换为你的实际业务逻辑
        print(f"批量任务执行中,已完成 {i+1}/{total_exec} 次")
        # 按需设置单次执行后的间隔,避免请求过快
        time.sleep(0.2)

# 绑定每日触发时间
schedule.every().day.at("01:00").do(batch_job)

if __name__ == "__main__":
    while True:
        schedule.run_pending()
        time.sleep(60)

适用场景:需要在业务低峰期集中处理完当日所有任务的场景,注意根据业务承受能力调整循环内的等待时长,避免资源占用过高。

补充说明
  • 如果单个任务执行耗时较长,建议将任务放到独立线程运行,避免阻塞schedule的主调度循环导致定时偏移。
  • 如果需要保证程序异常重启后执行计数不丢失,可以将当日执行次数、日期标识写入本地文件或轻量缓存,程序启动时读取恢复状态即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 00:24:31