Heim  >  Artikel  >  Backend-Entwicklung  >  Gibt es eine Möglichkeit, das Problem der geplanten Ausführung von Programmen in Python zu lösen?

Gibt es eine Möglichkeit, das Problem der geplanten Ausführung von Programmen in Python zu lösen?

王林
王林nach vorne
2023-05-08 22:52:061118Durchsuche

    Python geplantes Ausführungsprogramm (Zeitplan)

    Verwenden Sie die Zeitplanbibliothek

    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() # 运行所有可运行的任务

    Wenn Sie es um 4:30 Uhr ausführen möchten, müssen Sie Schedule.every().day.at("04:30" schreiben) ).do(job)

    Statt einfach Schedule.every().day.at("4:30").do(job)

    Hinweis: Wenn die Programmausführungszeit kürzer ist als das von Ihnen festgelegte Zeitintervall Das heißt, wenn das geplante Programm das nächste Mal mit der Ausführung beginnt und die Ausführung Ihres letzten Programms noch nicht abgeschlossen ist, wird ein neuer Prozess geöffnet.

    Wenn zu viele Prozesse gestapelt sind, wird es eine Katastrophe sein

    Aufzeichnung der Zeitverzögerung und Fallstricke bei der Ausführung geplanter Python-Aufgaben (Zeitplan)

    Führen Sie eine Aufgabe regelmäßig über Zeitplaneinstellungen aus

    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() # 运行所有可运行的任务

    Das Fallstrickproblem

    Das erste Beachten Sie, dass Sie das Programm manuell ausführen müssen, um den Dienst zu starten (das Programm wird zu diesem Zeitpunkt angehalten) und dann die Ausführung zum angegebenen Zeitpunkt fortsetzen.

    Der zweite zu beachtende Punkt ist, dass es bei der Verwendung aufgrund der Programmlaufzeit zu einem Zeitverzögerungsproblem kommt. Wenn Sie beispielsweise den Code so einstellen, dass er alle 10 Minuten ausgeführt wird, werden

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

    Ergebnisse angezeigt

    Gibt es eine Möglichkeit, das Problem der geplanten Ausführung von Programmen in Python zu lösen?

    , aber die nächste Ausführungszeit beginnt mit der Endzeit des letzten Programmlaufs + 10 Minuten, und ich möchte starten Ab dem letzten Programm laufen +10 Minuten, d. h. die korrekte Zeit sollte 10:20:21 betragen. Wenn dies so weitergeht, wird die Zeitverzögerung immer größer.

    Lösung

    Sie müssen nur eine bestimmte Zeit hinzufügen (die Einstellung hier ist 15 Sekunden):

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

    Das heißt, starten Sie den Dienst um 10:00:21 und

    führen Sie ihn zum ersten Mal um aus 10:10:15 ,
    Die zweite Ausführung erfolgt um 10:20:15,
    Die dritte Ausführung erfolgt um 10:30:15,

    Dies löst das durch die Programmlaufzeit verursachte Zeitverzögerungsproblem.

    Achtung! ! ! Wenn Sie den Dienst zum ersten Mal starten, müssen Sie das Programm 15 Sekunden nach der aktuellen Zeit ausführen, damit es normal funktioniert.

    Wenn der Dienst beispielsweise um 10:00:08 Uhr gestartet wird, wird er das nächste Mal um 10:09:15 Uhr ausgeführt (Ausnahme).

    Wenn der Dienst beispielsweise um 10:00:21 Uhr gestartet wird, wird er ausgeführt wird das nächste Mal um 10:10:15 Uhr ausgeführt (Ausnahme) Normal)

    Das obige ist der detaillierte Inhalt vonGibt es eine Möglichkeit, das Problem der geplanten Ausführung von Programmen in Python zu lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen