Python实现两函数每7天交替执行的技术方案咨询
解决方案思路与代码示例
核心逻辑
- 计算当前日期与**起始日(当年9月5日)**的天数间隔,将间隔除以7向下取整得到周数
- 周数为偶数(含0)时执行
upper函数,奇数时执行lower函数 - 先判断当前日期是否在有效周期内:即当年9月5日 ≤ 当前日期 ≤ 次年6月30日,超出范围则跳过执行
代码实现(Python)
import datetime import time def upper(): print(f"{datetime.datetime.now()} 执行upper函数") def lower(): print(f"{datetime.datetime.now()} 执行lower函数") def get_target_year(): # 处理跨年场景,确定周期的起始年和结束年 today = datetime.date.today() sep_5 = datetime.date(today.year, 9, 5) if today >= sep_5: start_year = today.year end_year = today.year + 1 else: start_year = today.year - 1 end_year = today.year return start_year, end_year def should_run(): # 检查当前日期是否在有效周期内 today = datetime.date.today() start_year, end_year = get_target_year() start_date = datetime.date(start_year, 9, 5) end_date = datetime.date(end_year, 6, 30) return start_date <= today <= end_date def get_current_function(): # 判断当前应执行的函数 today = datetime.date.today() start_year, _ = get_target_year() start_date = datetime.date(start_year, 9, 5) days_diff = (today - start_date).days week_num = days_diff // 7 return upper if week_num % 2 == 0 else lower def main(): # 持续运行逻辑,每天检查一次 while True: if should_run(): target_func = get_current_function() target_func() time.sleep(24 * 60 * 60) if __name__ == "__main__": main()
关键细节说明
get_target_year函数自动适配跨年情况,确保周期判断准确- 主循环每天执行一次检查,避免不必要的资源消耗
- 周数从0开始计数,完全匹配你给出的示例周期(9.5-9.11为第0周,执行
upper)
内容的提问来源于stack exchange,提问作者ezios23
相关产品推荐
相关产品推荐

