Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah terdapat cara untuk menyelesaikan masalah pelaksanaan program yang dijadualkan dalam Python?

Adakah terdapat cara untuk menyelesaikan masalah pelaksanaan program yang dijadualkan dalam Python?

王林
王林ke hadapan
2023-05-08 22:52:061116semak imbas

    Program pelaksanaan berjadual Python (jadual)

    Gunakan perpustakaan jadual

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

    Jika anda mahu melaksanakannya pada 4:30, anda mesti Tulis jadual.setiap().hari.at("04:30").buat(kerja)

    dan bukannya jadual.setiap().hari.at("4:30").buat (kerja)

    Perhatikan bahawa jika masa pelaksanaan program adalah lebih pendek daripada selang masa yang anda tetapkan, iaitu, apabila program berjadual seterusnya mula dilaksanakan, jika program terakhir anda belum dilaksanakan lagi, a proses baru akan dimulakan.

    Jika terlalu banyak proses disusun, ia akan menjadi bencana

    Rekod kelewatan masa pelaksanaan tugas berjadual python (jadual)

    Pelaksanaan tugas bermasa melalui tetapan jadual

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

    Masalah penjejakan

    Perkara pertama yang perlu diperhatikan ialah anda perlu menjalankan program secara manual untuk memulakan perkhidmatan (program akan dijeda pada masa ini), dan kemudian ia akan teruskan melaksanakan pada masa yang ditetapkan.

    Perkara kedua yang perlu diperhatikan ialah apabila menggunakannya, disebabkan masa berjalan program, akan ada masalah kelewatan masa. Contohnya, jika anda menetapkan kod untuk dijalankan setiap 10 minit,

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

    menghasilkan

    Adakah terdapat cara untuk menyelesaikan masalah pelaksanaan program yang dijadualkan dalam Python?

    , tetapi masa pelaksanaan seterusnya ialah +10 minit dari tamat program terakhir dijalankan, dan apa yang saya harapkan ialah +10 minit daripada kali terakhir program mula dijalankan, iaitu, yang betul ialah 10:20:21. Jika ini berterusan, kelewatan masa akan menjadi lebih besar dan lebih besar.

    Penyelesaian

    Hanya tambah masa tertentu (tetapan di sini ialah 15s):

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

    Dalam erti kata lain, pada 10:00:21Mula perkhidmatan,

    Pelaksanaan pertama ialah 10:10:15,
    Pelaksanaan kedua ialah 10:20:15,
    Pelaksanaan ketiga ialah 10:30:15,

    Ini menyelesaikan masalah kelewatan masa yang disebabkan oleh masa berjalan program.

    Perhatian! ! ! Apabila anda memulakan perkhidmatan buat kali pertama, anda mesti menjalankan program 15 saat selepas masa semasa untuk menjadi normal.

    Sebagai contoh, jika perkhidmatan dimulakan pada 10:00:08, ia akan dilaksanakan pada 10:09:15 kali seterusnya (pengecualian)

    Contohnya, jika perkhidmatan dimulakan pada 10:00:21, ia akan dilaksanakan pada 10:09:15 kali seterusnya Dilaksanakan pada 10:10:15 (biasa)

    Atas ialah kandungan terperinci Adakah terdapat cara untuk menyelesaikan masalah pelaksanaan program yang dijadualkan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam