>  기사  >  백엔드 개발  >  Python에서 프로그램의 예약 실행 문제를 해결할 수 있는 방법이 있습니까?

Python에서 프로그램의 예약 실행 문제를 해결할 수 있는 방법이 있습니까?

王林
王林앞으로
2023-05-08 22:52:061164검색

    Python 예약실행 프로그램(schedule)

    스케줄 라이브러리를 활용하세요

    import schedule
    import time
    def job():
        print("I'm working...")
    schedule.every(10).seconds.do(job) # 每10秒执行一次
    schedule.every().wednesday.at("13:15").do(job) # 每周三13点15执行
    schedule.every(10).minutes.do(job) # 每10分钟执行一次
    schedule.every().hour.do(job) # 每小时执行一次
    schedule.every().day.at("10:30").do(job) # 每天十点半执行
    schedule.every(5).to(10).minutes.do(job) # 每5-10分钟随机执行一次
    schedule.every().monday.do(job) # 每周一执行
    schedule.every().minute.at(":17").do(job) # 每分钟的17秒执行一次
    while True:
        schedule.run_pending() # 运行所有可运行的任务

    4시 30분에 실행하고 싶으시다면,schedul.every().day.at("04:30" 라고 적어주셔야 합니다. ).do(job)

    schedul.every().day.at("4:30").do(job)

    만 작성하는 대신 프로그램 실행 시간이 설정한 시간 간격보다 짧은 경우 , 즉, 다음에 예약된 프로그램이 실행되기 시작할 때 마지막 프로그램의 실행이 완료되지 않은 경우 새 프로세스가 열립니다.

    프로세스가 너무 많이 쌓이면 재앙

    파이썬 예정된 작업 실행(스케줄) 시간 지연 및 함정에 대한 기록

    스케줄 설정을 통해 정기적으로 작업을 실행

    import schedule
    import time
    # 定义某个任务
    def job():
        ...
    # 设置执行时间
    schedule.every().seconds.do(job) # 每秒执行一次任务
    schedule.every().minutes.do(job) # 每分钟执行一次任务
    schedule.every().hour.do(job) # 每小时执行一次任务
    # 可以指定具体时间间隔
    schedule.every(10).minutes.do(job) # 每10分钟执行一次任务
    # 设置每天某一时刻执行
    schedule.every().day.at("05:15").do(job) # 每天凌晨5点15分执行任务
    # 设置星期几执行
    schedule.every().monday.at("05:15").do(job) # 每周一凌晨5点15分执行任务
    while True:
        schedule.run_pending() # 运行所有可运行的任务

    함정 문제

    첫 번째 주의할 점은 프로그램을 수동으로 실행하여 서비스를 시작한 다음(이 시점에서 프로그램이 일시 중지됨) 지정된 시간에 실행을 계속해야 한다는 것입니다.

    두 번째 주의할 점은 사용시 프로그램 실행시간으로 인해 시간지연 문제가 발생한다는 점입니다. 예를 들어 10분마다 실행되도록 코드를 설정하면

    schedule.every(10).minutes.do(job) # 每10分钟执行一次任务

    결과가

    Python에서 프로그램의 예약 실행 문제를 해결할 수 있는 방법이 있습니까?

    나오는데, 다음 실행 시간은 마지막 프로그램 실행 종료 시간 + 10분부터이고 내가 원하는 건 시작이다. 마지막 프로그램에서 +10min을 실행합니다. 즉, 올바른 시간은 10:20:21이 되어야 합니다. 이 경우 시간 지연이 점점 더 커집니다.

    해결책

    특정 시간만 추가하면 됩니다(여기서 설정은 15초).

    schedule.every(10).minutes.at(":15").do(job) # 每10分钟过15s执行程序

    즉, 10:00:21에 서비스를 시작하고

    에 처음으로 실행합니다. 10:10:15 ,
    두 번째 실행은 10:20:15,
    세 번째 실행은 10:30:15,

    이렇게 하면 프로그램 실행 시간으로 인한 시간 지연 문제가 해결됩니다.

    주의! ! ! 처음 서비스를 시작할 때에는 현재 시간보다 15초 후에 프로그램을 실행해야 정상적으로 작동됩니다.

    예를 들어 10:00:08에 서비스가 시작되면 다음 번에는 10:09:15에 실행됩니다(예외)

    예를 들어 10:00:21에 서비스가 시작되면 다음번에는 10:10:15에 실행됩니다. (예외) 보통)

    위 내용은 Python에서 프로그램의 예약 실행 문제를 해결할 수 있는 방법이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제